ETH Price: $3,101.11 (+1.06%)
Gas: 8 Gwei

Token

Hold On for Dear Life (HODL)
 

Overview

Max Total Supply

1,000,000,000,000 HODL

Holders

568

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
13,370.074062146 HODL

Value
$0.00
0x471d5235499640f2a1f38819af383bdf486a62ba
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:
HoldOnForDearLife

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-25
*/

// SPDX-License-Identifier: MIT 

//In 2013 GameKyuubi said, "I AM HODLING BITCOIN." Three years later, he became rich.
//$HODL isn't just a tribute to the smartest behavior in crypto; it is a legacy — the one and only token that will transform every jeet into a HODLER.

// TG: @portal_hodl
// X(Twitter): https://x.com/hodl_erc20
// Website: https://hodl-token.io/

pragma solidity ^0.8.19;
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);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

    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 {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

library Address {
    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");
    }
}

contract HoldOnForDearLife is Context, IERC20, Ownable {
    using Address for address payable;
    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 _isExcluded;
    address public deadWallet = 0x000000000000000000000000000000000000dEaD;
    address public marketingWallet =(0xCCaa5B6ABEc6F70e1fA53f0C8226bE6FD1e85a2D);
   
    address[] private _excluded;
    bool public tradingEnabled;
    bool private swapEnabled;
    bool private swapping;

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);
    uint256 public _tTotal = 1000000000000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    string private constant _name = "Hold On for Dear Life";
    string private constant _symbol = "HODL";
    uint256 public swapTokensAtAmount = 4000000000 * 10**9;

    uint256 private genesis_block;
    uint256 private deadline = 0;

    struct Taxes {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
    }

    Taxes public taxes = Taxes(0, 0, 0);
    Taxes public sellTaxes = Taxes(3, 3, 0);
    Taxes private launchtax = Taxes(0, 0, 0);

    struct TotFeesPaidStruct {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
    }

    TotFeesPaidStruct public totFeesPaid;
    struct valuesFromGetValues {
        uint256 rAmount;
        uint256 rTransferAmount;
        uint256 rRfi;
        uint256 rmarketing;
        uint256 rLiquidity;
        uint256 tTransferAmount;
        uint256 tRfi;
        uint256 tmarketing;
        uint256 tLiquidity;
    }

    event FeesChanged();

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

    constructor() {
         
      
          router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
      

        address _pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        require(_pair != address(0), "Generated Pair Address cannot be zero");
        
        pair = _pair;

         excludeFromReward(pair);
         excludeFromReward(deadWallet);
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[deadWallet] = true;

         _rOwned[owner()] = _rTotal;
        emit Transfer(address(0), owner(), _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 view override returns (uint256) {
        return _tTotal;
    }

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

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

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

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true, false, false);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true, false, false);
            return s.rTransferAmount;
        }
    }

    function EnableTrading() external onlyOwner {
        require(!tradingEnabled, "Cannot re-enable trading");
        tradingEnabled = true;
        swapEnabled = true;
        genesis_block = block.number;
    }

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

    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function updateBuyTaxes(
        uint256 _rfi,
        uint256 _marketing,
        uint256 _liquidity
    ) public onlyOwner {
        require((_rfi + _marketing + _liquidity) <= 25, "Must keep fees at 25% or less");
        taxes = Taxes(_rfi, _marketing, _liquidity);
        emit FeesChanged();
    }

    function updateSellTaxes(
        uint256 _rfi,
        uint256 _marketing,
        uint256 _liquidity
    ) public onlyOwner {
        require((_rfi + _marketing + _liquidity) <= 25, "Must keep fees at 25% or less");
        sellTaxes = Taxes(_rfi, _marketing, _liquidity);
        emit FeesChanged();
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -= rRfi;
        totFeesPaid.rfi += tRfi;
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity += tLiquidity;

        if (_isExcluded[address(this)]) {
            _tOwned[address(this)] += tLiquidity;
        }
        _rOwned[address(this)] += rLiquidity;
    }

    function _takeMarketingFee(uint256 rmarketing, uint256 tmarketing) private {
        totFeesPaid.marketing += tmarketing;

        if (_isExcluded[address(this)]) {
            _tOwned[address(this)] += tmarketing;
        }
        _rOwned[address(this)] += rmarketing;
    }

    function _getValues(
        uint256 tAmount,
        bool takeFee,
        bool isSell,
        bool useLaunchTax
    ) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, isSell, useLaunchTax);
        (
            to_return.rAmount,
            to_return.rTransferAmount,
            to_return.rRfi,
            to_return.rmarketing,
            to_return.rLiquidity
        ) = _getRValues1(to_return, tAmount, takeFee, _getRate());
       
        return to_return;
    }

    function _getTValues(
        uint256 tAmount,
        bool takeFee,
        bool isSell,
        bool useLaunchTax
    ) private view returns (valuesFromGetValues memory s) {
        if (!takeFee) {
            s.tTransferAmount = tAmount;
            return s;
        }
        Taxes memory temp;
        if (isSell && !useLaunchTax) temp = sellTaxes;
        else if (!useLaunchTax) temp = taxes;
        else temp = launchtax;

        s.tRfi = (tAmount * temp.rfi) / 100;
        s.tmarketing = (tAmount * temp.marketing) / 100;
        s.tLiquidity = (tAmount * temp.liquidity) / 100;
        s.tTransferAmount =
            tAmount -
            s.tRfi -
            s.tmarketing -
            s.tLiquidity;
        return s;
    }

    function _getRValues1(
        valuesFromGetValues memory s,
        uint256 tAmount,
        bool takeFee,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rRfi,
            uint256 rmarketing,
            uint256 rLiquidity
        )
    {
        rAmount = tAmount * currentRate;

        if (!takeFee) {
            return (rAmount, rAmount, 0, 0, 0);
        }

        rRfi = s.tRfi * currentRate;
        rmarketing = s.tmarketing * currentRate;
        rLiquidity = s.tLiquidity * currentRate;
        rTransferAmount =
            rAmount -
            rRfi -
            rmarketing -
            rLiquidity;
        return (rAmount, rTransferAmount, rRfi, rmarketing, rLiquidity);
    }

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

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply)
                return (_rTotal, _tTotal);
            rSupply = rSupply - _rOwned[_excluded[i]];
            tSupply = tSupply - _tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    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");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");

        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            require(tradingEnabled, "Trading not active");
        }

        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if (!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && 
        !_isExcludedFromFee[to]
        ) {
            if (to == pair) swapAndLiquify(swapTokensAtAmount, sellTaxes);
            else swapAndLiquify(swapTokensAtAmount, taxes);
        }
        bool takeFee = true;
        bool isSell = false;
        if (swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to]) takeFee = false;
        if (to == pair) isSell = true;
        if (from != pair && to != pair) { //transfer
           takeFee = false;
       }
       
        _tokenTransfer(from, to, amount, takeFee, isSell);
    }

    function _tokenTransfer(address sender,address recipient,uint256 tAmount,bool takeFee,bool isSell) private {
        bool useLaunchTax = !_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient] && block.number < genesis_block + deadline;

        valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSell, useLaunchTax);

        if (_isExcluded[sender]) {
            //from excluded
            _tOwned[sender] = _tOwned[sender] - tAmount;
        }
        if (_isExcluded[recipient]) {
            //to excluded
            _tOwned[recipient] = _tOwned[recipient] + s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender] - s.rAmount;
        _rOwned[recipient] = _rOwned[recipient] + s.rTransferAmount;

        if (s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if (s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity, s.tLiquidity);
            emit Transfer(
                sender,
                address(this),
                s.tLiquidity + s.tmarketing
            );
        }
        if (s.rmarketing > 0 || s.tmarketing > 0) _takeMarketingFee(s.rmarketing, s.tmarketing);
        emit Transfer(sender, recipient, s.tTransferAmount);
    }

    function swapAndLiquify(uint256 contractBalance, Taxes memory temp) private lockTheSwap {
        uint256 denominator = (temp.liquidity +
            temp.marketing) * 2;

        if (denominator == 0){
            return;
        }

        uint256 tokensToAddLiquidityWith = (contractBalance * temp.liquidity) / denominator;
        uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance = deltaBalance / (denominator - temp.liquidity);
        uint256 ethToAddLiquidityWith = unitBalance * temp.liquidity;

        if (ethToAddLiquidityWith > 0) {
            addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * temp.marketing;
        if (marketingAmt > 0) {
            payable(marketingWallet).sendValue(marketingAmt);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(router), tokenAmount);

        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadWallet,
            block.timestamp
        );
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0),"Fee Address cannot be zero address");
        marketingWallet = newWallet;
    }

    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner {
        require(amount <= 10000000000, "Cannot set swap threshold amount higher than 1% of tokens");
        require(amount >= 1000000000, "Cannot set swap threshold amount lower than 0.01% of tokens");
        swapTokensAtAmount = amount * 10**_decimals;
    }

    function updateSwapEnabled(bool _enabled) external onlyOwner {
        swapEnabled = _enabled;
    }

    function rescueETH() external {
        uint256 contractETHBalance = address(this).balance;
        payable(marketingWallet).transfer(contractETHBalance);
    }

    function rescueERC20Tokens(address _tokenAddr,address _to, uint256 _amount) public onlyOwner {
        require(_tokenAddr != address(this), "Owner can't claim contract's balance of its own tokens");
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    receive() external payable {}
}

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":[],"name":"FeesChanged","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"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_tTotal","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":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"updateBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"updateSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600680546001600160a01b031990811661dead179091556007805490911673ccaa5b6abec6f70e1fa53f0c8226be6fd1e85a2d179055620000486009600a620009cf565b620000599064e8d4a51000620009e0565b600b8190556200006c9060001962000a10565b6200007a9060001962000a27565b600c55673782dace9d900000600d556000600f81905560408051606080820183528382526020808301859052918301849052601084905560118490556012849055825180820184526003808252818401819052908401859052601381905560145560158490558251908101835283815290810183905201819052601681905560178190556018553480156200010e57600080fd5b506200011a3362000494565b600980546301000000600160b81b031916767a250d5630b4cf539739df2c5dacb4c659f2488d00000017908190556040805163c45a015560e01b815290516000926001600160a01b036301000000909104169163c45a01559160048083019260209291908290030181865afa15801562000198573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001be919062000a3d565b6001600160a01b031663c9c6539630600960039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000221573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000247919062000a3d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000295573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bb919062000a3d565b90506001600160a01b038116620003275760405162461bcd60e51b815260206004820152602560248201527f47656e657261746564205061697220416464726573732063616e6e6f74206265604482015264207a65726f60d81b60648201526084015b60405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556200035090620004e4565b60065462000367906001600160a01b0316620004e4565b3060009081526004602081905260408220805460ff19166001908117909155916200039a6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600754821681526004909352818320805485166001908117909155600654909116835290822080549093168117909255600c549190620004106000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020556200043d6000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200048591815260200190565b60405180910390a35062000ab1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620005405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200031e565b6001600160a01b03811660009081526005602052604090205460ff1615620005ab5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016200031e565b6001600160a01b0381166000908152600160205260409020541562000608576001600160a01b038116600090815260016020526040902054620005ee906200066e565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000600c54821115620006d75760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016200031e565b6000620006e3620006f8565b9050620006f1818462000a68565b9392505050565b60008080620007066200071e565b909250905062000717818362000a68565b9250505090565b600c54600b546000918291825b600854811015620008865782600160006008848154811062000751576200075162000a7f565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180620007c0575081600260006008848154811062000799576200079962000a7f565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15620007d757600c54600b54945094505050509091565b6001600060088381548110620007f157620007f162000a7f565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462000822908462000a27565b925060026000600883815481106200083e576200083e62000a7f565b60009182526020808320909101546001600160a01b031683528201929092526040019020546200086f908362000a27565b9150806200087d8162000a95565b9150506200072b565b50600b54600c5462000899919062000a68565b821015620008b157600c54600b549350935050509091565b90939092509050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000911578160001904821115620008f557620008f5620008ba565b808516156200090357918102915b93841c9390800290620008d5565b509250929050565b6000826200092a57506001620009c9565b816200093957506000620009c9565b81600181146200095257600281146200095d576200097d565b6001915050620009c9565b60ff841115620009715762000971620008ba565b50506001821b620009c9565b5060208310610133831016604e8410600b8410161715620009a2575081810a620009c9565b620009ae8383620008d0565b8060001904821115620009c557620009c5620008ba565b0290505b92915050565b6000620006f160ff84168362000919565b8082028115828204841417620009c957620009c9620008ba565b634e487b7160e01b600052601260045260246000fd5b60008262000a225762000a22620009fa565b500690565b81810381811115620009c957620009c9620008ba565b60006020828403121562000a5057600080fd5b81516001600160a01b0381168114620006f157600080fd5b60008262000a7a5762000a7a620009fa565b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820162000aaa5762000aaa620008ba565b5060010190565b61319f8062000ac16000396000f3fe6080604052600436106102bf5760003560e01c806388f820201161016e578063af465a27116100cb578063e2f456051161007f578063f2fde38b11610064578063f2fde38b14610822578063f66895a314610842578063f887ea401461086157600080fd5b8063e2f45605146107ec578063ea2f0b371461080257600080fd5b8063d257b34f116100b0578063d257b34f14610766578063d7b4685414610786578063dd62ed3e146107a657600080fd5b8063af465a2714610730578063b4337b4e1461074657600080fd5b80639ba5e4d511610122578063a8aa1b3111610107578063a8aa1b31146106d0578063a9059cbb146106f0578063aacebbe31461071057600080fd5b80639ba5e4d514610691578063a457c2d7146106b057600080fd5b80638da5cb5b116101535780638da5cb5b1461060d578063924de9b71461062b57806395d89b411461064b57600080fd5b806388f82020146105b45780638c374ac1146105ed57600080fd5b8063437823ec1161021c57806370a08231116101d0578063728f8eea116101b5578063728f8eea1461052257806375f0a8741461055c57806385141a771461059457600080fd5b806370a08231146104ed578063715018a61461050d57600080fd5b80634ada218b116102015780634ada218b1461047a57806352390c02146104945780635342acb4146104b457600080fd5b8063437823ec1461043a5780634549b0391461045a57600080fd5b806323b872dd11610273578063313ce56711610258578063313ce567146103de5780633685d419146103fa578063395093511461041a57600080fd5b806323b872dd1461039e5780632d838119146103be57600080fd5b806318160ddd116102a457806318160ddd146103535780631d97b7cd1461037257806320800a001461038957600080fd5b806306fdde03146102cb578063095ea7b31461032357600080fd5b366102c657005b600080fd5b3480156102d757600080fd5b5060408051808201909152601581527f486f6c64204f6e20666f722044656172204c696665000000000000000000000060208201525b60405161031a9190612ca5565b60405180910390f35b34801561032f57600080fd5b5061034361033e366004612d26565b610888565b604051901515815260200161031a565b34801561035f57600080fd5b50600b545b60405190815260200161031a565b34801561037e57600080fd5b5061038761089f565b005b34801561039557600080fd5b50610387610983565b3480156103aa57600080fd5b506103436103b9366004612d52565b6109c1565b3480156103ca57600080fd5b506103646103d9366004612d93565b610a87565b3480156103ea57600080fd5b506040516009815260200161031a565b34801561040657600080fd5b50610387610415366004612dac565b610b1e565b34801561042657600080fd5b50610343610435366004612d26565b610d30565b34801561044657600080fd5b50610387610455366004612dac565b610d67565b34801561046657600080fd5b50610364610475366004612dd7565b610de5565b34801561048657600080fd5b506009546103439060ff1681565b3480156104a057600080fd5b506103876104af366004612dac565b610e75565b3480156104c057600080fd5b506103436104cf366004612dac565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156104f957600080fd5b50610364610508366004612dac565b611010565b34801561051957600080fd5b5061038761106f565b34801561052e57600080fd5b5060105460115460125461054192919083565b6040805193845260208401929092529082015260600161031a565b34801561056857600080fd5b5060075461057c906001600160a01b031681565b6040516001600160a01b03909116815260200161031a565b3480156105a057600080fd5b5060065461057c906001600160a01b031681565b3480156105c057600080fd5b506103436105cf366004612dac565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105f957600080fd5b50610387610608366004612e07565b6110d5565b34801561061957600080fd5b506000546001600160a01b031661057c565b34801561063757600080fd5b50610387610646366004612e33565b6111e8565b34801561065757600080fd5b5060408051808201909152600481527f484f444c00000000000000000000000000000000000000000000000000000000602082015261030d565b34801561069d57600080fd5b50601954601a54601b5461054192919083565b3480156106bc57600080fd5b506103436106cb366004612d26565b611279565b3480156106dc57600080fd5b50600a5461057c906001600160a01b031681565b3480156106fc57600080fd5b5061034361070b366004612d26565b61132c565b34801561071c57600080fd5b5061038761072b366004612dac565b611339565b34801561073c57600080fd5b50610364600b5481565b34801561075257600080fd5b50610387610761366004612e07565b611449565b34801561077257600080fd5b50610387610781366004612d93565b61155c565b34801561079257600080fd5b506103876107a1366004612d52565b6116c7565b3480156107b257600080fd5b506103646107c1366004612e50565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156107f857600080fd5b50610364600d5481565b34801561080e57600080fd5b5061038761081d366004612dac565b611831565b34801561082e57600080fd5b5061038761083d366004612dac565b6118ac565b34801561084e57600080fd5b5060135460145460155461054192919083565b34801561086d57600080fd5b5060095461057c90630100000090046001600160a01b031681565b600061089533848461198e565b5060015b92915050565b6000546001600160a01b031633146108fe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60095460ff16156109515760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016108f5565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661010117905543600e55565b60075460405147916001600160a01b03169082156108fc029083906000818181858888f193505050501580156109bd573d6000803e3d6000fd5b5050565b60006109ce848484611ae6565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015610a685760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084016108f5565b610a7c8533610a778685612ead565b61198e565b506001949350505050565b6000600c54821115610b015760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e730000000000000000000000000000000000000000000060648201526084016108f5565b6000610b0b611f4e565b9050610b178184612ec0565b9392505050565b6000546001600160a01b03163314610b785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6001600160a01b03811660009081526005602052604090205460ff16610be05760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c7564656400000000000000000060448201526064016108f5565b60005b6008548110156109bd57816001600160a01b031660088281548110610c0a57610c0a612efb565b6000918252602090912001546001600160a01b031603610d1e5760088054610c3490600190612ead565b81548110610c4457610c44612efb565b600091825260209091200154600880546001600160a01b039092169183908110610c7057610c70612efb565b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556008805480610ce057610ce0612f2a565b600082815260209020810160001990810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690550190555050565b80610d2881612f59565b915050610be3565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610895918590610a77908690612f73565b6000546001600160a01b03163314610dc15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600b54831115610e395760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108f5565b81610e58576000610e4e846001600080611f71565b5191506108999050565b6000610e68846001600080611f71565b6020015191506108999050565b6000546001600160a01b03163314610ecf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6001600160a01b03811660009081526005602052604090205460ff1615610f385760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108f5565b6001600160a01b03811660009081526001602052604090205415610f92576001600160a01b038116600090815260016020526040902054610f7890610a87565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b6001600160a01b03811660009081526005602052604081205460ff161561104d57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461089990610a87565b6000546001600160a01b031633146110c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6110d36000612000565b565b6000546001600160a01b0316331461112f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b60198161113c8486612f73565b6111469190612f73565b11156111945760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c65737300000060448201526064016108f5565b60408051606081018252848152602081018490528101829052601084905560118390556012829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a1505050565b6000546001600160a01b031633146112425760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b60098054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156113135760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016108f5565b6113223385610a778685612ead565b5060019392505050565b6000610895338484611ae6565b6000546001600160a01b031633146113935760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6001600160a01b03811661140f5760405162461bcd60e51b815260206004820152602260248201527f46656520416464726573732063616e6e6f74206265207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016108f5565b600780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6019816114b08486612f73565b6114ba9190612f73565b11156115085760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c65737300000060448201526064016108f5565b60408051606081018252848152602081018490528101829052601384905560148390556015829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a1505050565b6000546001600160a01b031633146115b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6402540be4008111156116315760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f20686967686572207468616e203125206f6620746f6b656e730000000000000060648201526084016108f5565b633b9aca008110156116ab5760405162461bcd60e51b815260206004820152603b60248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f206c6f776572207468616e20302e303125206f6620746f6b656e73000000000060648201526084016108f5565b6116b76009600a61306a565b6116c19082613079565b600d5550565b6000546001600160a01b031633146117215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b306001600160a01b0384160361179f5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60448201527f616e6365206f6620697473206f776e20746f6b656e730000000000000000000060648201526084016108f5565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015611807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182b9190613090565b50505050565b6000546001600160a01b0316331461188b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146119065760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6001600160a01b0381166119825760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016108f5565b61198b81612000565b50565b6001600160a01b038316611a095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016108f5565b6001600160a01b038216611a855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016108f5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b625760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016108f5565b6001600160a01b038216611bde5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016108f5565b60008111611c545760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016108f5565b611c5d83611010565b811115611cd25760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f72652060448201527f7468616e20796f75722062616c616e636500000000000000000000000000000060648201526084016108f5565b6001600160a01b03831660009081526004602052604090205460ff16158015611d1457506001600160a01b03821660009081526004602052604090205460ff16155b15611d6b5760095460ff16611d6b5760405162461bcd60e51b815260206004820152601260248201527f54726164696e67206e6f7420616374697665000000000000000000000000000060448201526064016108f5565b6000600d54611d7930611010565b600954911115915062010000900460ff16158015611d9e5750600954610100900460ff165b8015611da75750805b8015611dc15750600a546001600160a01b03858116911614155b8015611de657506001600160a01b03841660009081526004602052604090205460ff16155b8015611e0b57506001600160a01b03831660009081526004602052604090205460ff16155b15611e8757600a546001600160a01b0390811690841603611e5957600d54604080516060810182526013548152601454602082015260155491810191909152611e549190612068565b611e87565b600d54604080516060810182526010548152601154602082015260125491810191909152611e879190612068565b60095460019060009062010000900460ff1680611ebc57506001600160a01b03861660009081526004602052604090205460ff165b80611edf57506001600160a01b03851660009081526004602052604090205460ff165b15611ee957600091505b600a546001600160a01b0390811690861603611f03575060015b600a546001600160a01b03878116911614801590611f2f5750600a546001600160a01b03868116911614155b15611f3957600091505b611f4686868685856121bd565b505050505050565b6000806000611f5b6124a7565b9092509050611f6a8183612ec0565b9250505090565b611fc06040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b611fcc8585858561262a565b9050611fe1818686611fdc611f4e565b6127cd565b608086015260608501526040840152602083015281525b949350505050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000179055602081015160408201516000916120ab91612f73565b6120b6906002613079565b9050806000036120c65750612191565b6000818360400151856120d99190613079565b6120e39190612ec0565b905060006120f18286612ead565b9050476120fd8261285a565b60006121098247612ead565b9050600086604001518661211d9190612ead565b6121279083612ec0565b9050600087604001518261213b9190613079565b9050801561214d5761214d86826129ec565b6020880151600090612160846002613079565b61216a9190613079565b9050801561218857600754612188906001600160a01b031682612ac7565b50505050505050505b5050600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff169055565b6001600160a01b03851660009081526004602052604081205460ff161580156121ff57506001600160a01b03851660009081526004602052604090205460ff16155b80156122195750600f54600e546122169190612f73565b43105b9050600061222985858585611f71565b6001600160a01b03881660009081526005602052604090205490915060ff161561228b576001600160a01b038716600090815260026020526040902054612271908690612ead565b6001600160a01b0388166000908152600260205260409020555b6001600160a01b03861660009081526005602052604090205460ff16156122ee5760a08101516001600160a01b0387166000908152600260205260409020546122d49190612f73565b6001600160a01b0387166000908152600260205260409020555b80516001600160a01b0388166000908152600160205260409020546123139190612ead565b6001600160a01b038089166000908152600160209081526040808320949094558401519189168152919091205461234a9190612f73565b6001600160a01b038716600090815260016020526040908190209190915581015115158061237c575060008160c00151115b156123935761239381604001518260c00151612be5565b6000816080015111806123ab57506000816101000151115b1561241f576123c38160800151826101000151612c1a565b306001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e0015184610100015161240d9190612f73565b60405190815260200160405180910390a35b600081606001511180612436575060008160e00151115b1561244d5761244d81606001518260e00151612c90565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360a0015160405161249691815260200190565b60405180910390a350505050505050565b600c54600b546000918291825b6008548110156125f9578260016000600884815481106124d6576124d6612efb565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612541575081600260006008848154811061251a5761251a612efb565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561255757600c54600b54945094505050509091565b600160006008838154811061256e5761256e612efb565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461259d9084612ead565b925060026000600883815481106125b6576125b6612efb565b60009182526020808320909101546001600160a01b031683528201929092526040019020546125e59083612ead565b9150806125f181612f59565b9150506124b4565b50600b54600c5461260a9190612ec0565b82101561262157600c54600b549350935050509091565b90939092509050565b6126796040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8361268a5760a08101859052611ff8565b6126ae60405180606001604052806000815260200160008152602001600081525090565b8380156126b9575082155b156126e55750604080516060810182526013548152601454602082015260155491810191909152612734565b826127115750604080516060810182526010548152601154602082015260125491810191909152612734565b506040805160608101825260165481526017546020820152601854918101919091525b80516064906127439088613079565b61274d9190612ec0565b60c083015260208101516064906127649088613079565b61276e9190612ec0565b60e083015260408101516064906127859088613079565b61278f9190612ec0565b610100830181905260e083015160c08401516127ab9089612ead565b6127b59190612ead565b6127bf9190612ead565b60a083015250949350505050565b6000808080806127dd8689613079565b9450866127f55750839250600091508190508061284f565b858960c001516128059190613079565b9250858960e001516128179190613079565b91508589610100015161282a9190613079565b905080826128388588612ead565b6128429190612ead565b61284c9190612ead565b93505b945094509450945094565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061288f5761288f612efb565b60200260200101906001600160a01b031690816001600160a01b031681525050600960039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612902573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292691906130ad565b8160018151811061293957612939612efb565b6001600160a01b03928316602091820292909201015260095461296691309163010000009004168461198e565b6009546040517f791ac94700000000000000000000000000000000000000000000000000000000815263010000009091046001600160a01b03169063791ac947906129be9085906000908690309042906004016130ca565b600060405180830381600087803b1580156129d857600080fd5b505af1158015611f46573d6000803e3d6000fd5b600954612a0b903090630100000090046001600160a01b03168461198e565b6009546006546040517ff305d7190000000000000000000000000000000000000000000000000000000081523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a48201526301000000909204169063f305d71990839060c40160606040518083038185885af1158015612a9b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ac0919061313b565b5050505050565b80471015612b175760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108f5565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612b64576040519150601f19603f3d011682016040523d82523d6000602084013e612b69565b606091505b5050905080612be05760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108f5565b505050565b81600c6000828254612bf79190612ead565b909155505060198054829190600090612c11908490612f73565b90915550505050565b8060196002016000828254612c2f9190612f73565b90915550503060009081526005602052604090205460ff1615612c71573060009081526002602052604081208054839290612c6b908490612f73565b90915550505b3060009081526001602052604081208054849290612c11908490612f73565b8060196001016000828254612c2f9190612f73565b600060208083528351808285015260005b81811015612cd257858101830151858201604001528201612cb6565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6001600160a01b038116811461198b57600080fd5b60008060408385031215612d3957600080fd5b8235612d4481612d11565b946020939093013593505050565b600080600060608486031215612d6757600080fd5b8335612d7281612d11565b92506020840135612d8281612d11565b929592945050506040919091013590565b600060208284031215612da557600080fd5b5035919050565b600060208284031215612dbe57600080fd5b8135610b1781612d11565b801515811461198b57600080fd5b60008060408385031215612dea57600080fd5b823591506020830135612dfc81612dc9565b809150509250929050565b600080600060608486031215612e1c57600080fd5b505081359360208301359350604090920135919050565b600060208284031215612e4557600080fd5b8135610b1781612dc9565b60008060408385031215612e6357600080fd5b8235612e6e81612d11565b91506020830135612dfc81612d11565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561089957610899612e7e565b600082612ef6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006000198203612f6c57612f6c612e7e565b5060010190565b8082018082111561089957610899612e7e565b600181815b80851115612fc1578160001904821115612fa757612fa7612e7e565b80851615612fb457918102915b93841c9390800290612f8b565b509250929050565b600082612fd857506001610899565b81612fe557506000610899565b8160018114612ffb576002811461300557613021565b6001915050610899565b60ff84111561301657613016612e7e565b50506001821b610899565b5060208310610133831016604e8410600b8410161715613044575081810a610899565b61304e8383612f86565b806000190482111561306257613062612e7e565b029392505050565b6000610b1760ff841683612fc9565b808202811582820484141761089957610899612e7e565b6000602082840312156130a257600080fd5b8151610b1781612dc9565b6000602082840312156130bf57600080fd5b8151610b1781612d11565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561311a5784516001600160a01b0316835293830193918301916001016130f5565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561315057600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212209f53ad246c0f2545e3a0fea08c647e9807d8c5c75b70dce705aa0f2607bc3bdf64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102bf5760003560e01c806388f820201161016e578063af465a27116100cb578063e2f456051161007f578063f2fde38b11610064578063f2fde38b14610822578063f66895a314610842578063f887ea401461086157600080fd5b8063e2f45605146107ec578063ea2f0b371461080257600080fd5b8063d257b34f116100b0578063d257b34f14610766578063d7b4685414610786578063dd62ed3e146107a657600080fd5b8063af465a2714610730578063b4337b4e1461074657600080fd5b80639ba5e4d511610122578063a8aa1b3111610107578063a8aa1b31146106d0578063a9059cbb146106f0578063aacebbe31461071057600080fd5b80639ba5e4d514610691578063a457c2d7146106b057600080fd5b80638da5cb5b116101535780638da5cb5b1461060d578063924de9b71461062b57806395d89b411461064b57600080fd5b806388f82020146105b45780638c374ac1146105ed57600080fd5b8063437823ec1161021c57806370a08231116101d0578063728f8eea116101b5578063728f8eea1461052257806375f0a8741461055c57806385141a771461059457600080fd5b806370a08231146104ed578063715018a61461050d57600080fd5b80634ada218b116102015780634ada218b1461047a57806352390c02146104945780635342acb4146104b457600080fd5b8063437823ec1461043a5780634549b0391461045a57600080fd5b806323b872dd11610273578063313ce56711610258578063313ce567146103de5780633685d419146103fa578063395093511461041a57600080fd5b806323b872dd1461039e5780632d838119146103be57600080fd5b806318160ddd116102a457806318160ddd146103535780631d97b7cd1461037257806320800a001461038957600080fd5b806306fdde03146102cb578063095ea7b31461032357600080fd5b366102c657005b600080fd5b3480156102d757600080fd5b5060408051808201909152601581527f486f6c64204f6e20666f722044656172204c696665000000000000000000000060208201525b60405161031a9190612ca5565b60405180910390f35b34801561032f57600080fd5b5061034361033e366004612d26565b610888565b604051901515815260200161031a565b34801561035f57600080fd5b50600b545b60405190815260200161031a565b34801561037e57600080fd5b5061038761089f565b005b34801561039557600080fd5b50610387610983565b3480156103aa57600080fd5b506103436103b9366004612d52565b6109c1565b3480156103ca57600080fd5b506103646103d9366004612d93565b610a87565b3480156103ea57600080fd5b506040516009815260200161031a565b34801561040657600080fd5b50610387610415366004612dac565b610b1e565b34801561042657600080fd5b50610343610435366004612d26565b610d30565b34801561044657600080fd5b50610387610455366004612dac565b610d67565b34801561046657600080fd5b50610364610475366004612dd7565b610de5565b34801561048657600080fd5b506009546103439060ff1681565b3480156104a057600080fd5b506103876104af366004612dac565b610e75565b3480156104c057600080fd5b506103436104cf366004612dac565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156104f957600080fd5b50610364610508366004612dac565b611010565b34801561051957600080fd5b5061038761106f565b34801561052e57600080fd5b5060105460115460125461054192919083565b6040805193845260208401929092529082015260600161031a565b34801561056857600080fd5b5060075461057c906001600160a01b031681565b6040516001600160a01b03909116815260200161031a565b3480156105a057600080fd5b5060065461057c906001600160a01b031681565b3480156105c057600080fd5b506103436105cf366004612dac565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105f957600080fd5b50610387610608366004612e07565b6110d5565b34801561061957600080fd5b506000546001600160a01b031661057c565b34801561063757600080fd5b50610387610646366004612e33565b6111e8565b34801561065757600080fd5b5060408051808201909152600481527f484f444c00000000000000000000000000000000000000000000000000000000602082015261030d565b34801561069d57600080fd5b50601954601a54601b5461054192919083565b3480156106bc57600080fd5b506103436106cb366004612d26565b611279565b3480156106dc57600080fd5b50600a5461057c906001600160a01b031681565b3480156106fc57600080fd5b5061034361070b366004612d26565b61132c565b34801561071c57600080fd5b5061038761072b366004612dac565b611339565b34801561073c57600080fd5b50610364600b5481565b34801561075257600080fd5b50610387610761366004612e07565b611449565b34801561077257600080fd5b50610387610781366004612d93565b61155c565b34801561079257600080fd5b506103876107a1366004612d52565b6116c7565b3480156107b257600080fd5b506103646107c1366004612e50565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156107f857600080fd5b50610364600d5481565b34801561080e57600080fd5b5061038761081d366004612dac565b611831565b34801561082e57600080fd5b5061038761083d366004612dac565b6118ac565b34801561084e57600080fd5b5060135460145460155461054192919083565b34801561086d57600080fd5b5060095461057c90630100000090046001600160a01b031681565b600061089533848461198e565b5060015b92915050565b6000546001600160a01b031633146108fe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60095460ff16156109515760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016108f5565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661010117905543600e55565b60075460405147916001600160a01b03169082156108fc029083906000818181858888f193505050501580156109bd573d6000803e3d6000fd5b5050565b60006109ce848484611ae6565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015610a685760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084016108f5565b610a7c8533610a778685612ead565b61198e565b506001949350505050565b6000600c54821115610b015760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e730000000000000000000000000000000000000000000060648201526084016108f5565b6000610b0b611f4e565b9050610b178184612ec0565b9392505050565b6000546001600160a01b03163314610b785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6001600160a01b03811660009081526005602052604090205460ff16610be05760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c7564656400000000000000000060448201526064016108f5565b60005b6008548110156109bd57816001600160a01b031660088281548110610c0a57610c0a612efb565b6000918252602090912001546001600160a01b031603610d1e5760088054610c3490600190612ead565b81548110610c4457610c44612efb565b600091825260209091200154600880546001600160a01b039092169183908110610c7057610c70612efb565b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556008805480610ce057610ce0612f2a565b600082815260209020810160001990810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690550190555050565b80610d2881612f59565b915050610be3565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610895918590610a77908690612f73565b6000546001600160a01b03163314610dc15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600b54831115610e395760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108f5565b81610e58576000610e4e846001600080611f71565b5191506108999050565b6000610e68846001600080611f71565b6020015191506108999050565b6000546001600160a01b03163314610ecf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6001600160a01b03811660009081526005602052604090205460ff1615610f385760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108f5565b6001600160a01b03811660009081526001602052604090205415610f92576001600160a01b038116600090815260016020526040902054610f7890610a87565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b6001600160a01b03811660009081526005602052604081205460ff161561104d57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461089990610a87565b6000546001600160a01b031633146110c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6110d36000612000565b565b6000546001600160a01b0316331461112f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b60198161113c8486612f73565b6111469190612f73565b11156111945760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c65737300000060448201526064016108f5565b60408051606081018252848152602081018490528101829052601084905560118390556012829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a1505050565b6000546001600160a01b031633146112425760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b60098054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156113135760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016108f5565b6113223385610a778685612ead565b5060019392505050565b6000610895338484611ae6565b6000546001600160a01b031633146113935760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6001600160a01b03811661140f5760405162461bcd60e51b815260206004820152602260248201527f46656520416464726573732063616e6e6f74206265207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016108f5565b600780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6019816114b08486612f73565b6114ba9190612f73565b11156115085760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c65737300000060448201526064016108f5565b60408051606081018252848152602081018490528101829052601384905560148390556015829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a1505050565b6000546001600160a01b031633146115b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6402540be4008111156116315760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f20686967686572207468616e203125206f6620746f6b656e730000000000000060648201526084016108f5565b633b9aca008110156116ab5760405162461bcd60e51b815260206004820152603b60248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f206c6f776572207468616e20302e303125206f6620746f6b656e73000000000060648201526084016108f5565b6116b76009600a61306a565b6116c19082613079565b600d5550565b6000546001600160a01b031633146117215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b306001600160a01b0384160361179f5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60448201527f616e6365206f6620697473206f776e20746f6b656e730000000000000000000060648201526084016108f5565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015611807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182b9190613090565b50505050565b6000546001600160a01b0316331461188b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146119065760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b6001600160a01b0381166119825760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016108f5565b61198b81612000565b50565b6001600160a01b038316611a095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016108f5565b6001600160a01b038216611a855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016108f5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b625760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016108f5565b6001600160a01b038216611bde5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016108f5565b60008111611c545760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016108f5565b611c5d83611010565b811115611cd25760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f72652060448201527f7468616e20796f75722062616c616e636500000000000000000000000000000060648201526084016108f5565b6001600160a01b03831660009081526004602052604090205460ff16158015611d1457506001600160a01b03821660009081526004602052604090205460ff16155b15611d6b5760095460ff16611d6b5760405162461bcd60e51b815260206004820152601260248201527f54726164696e67206e6f7420616374697665000000000000000000000000000060448201526064016108f5565b6000600d54611d7930611010565b600954911115915062010000900460ff16158015611d9e5750600954610100900460ff165b8015611da75750805b8015611dc15750600a546001600160a01b03858116911614155b8015611de657506001600160a01b03841660009081526004602052604090205460ff16155b8015611e0b57506001600160a01b03831660009081526004602052604090205460ff16155b15611e8757600a546001600160a01b0390811690841603611e5957600d54604080516060810182526013548152601454602082015260155491810191909152611e549190612068565b611e87565b600d54604080516060810182526010548152601154602082015260125491810191909152611e879190612068565b60095460019060009062010000900460ff1680611ebc57506001600160a01b03861660009081526004602052604090205460ff165b80611edf57506001600160a01b03851660009081526004602052604090205460ff165b15611ee957600091505b600a546001600160a01b0390811690861603611f03575060015b600a546001600160a01b03878116911614801590611f2f5750600a546001600160a01b03868116911614155b15611f3957600091505b611f4686868685856121bd565b505050505050565b6000806000611f5b6124a7565b9092509050611f6a8183612ec0565b9250505090565b611fc06040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b611fcc8585858561262a565b9050611fe1818686611fdc611f4e565b6127cd565b608086015260608501526040840152602083015281525b949350505050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000179055602081015160408201516000916120ab91612f73565b6120b6906002613079565b9050806000036120c65750612191565b6000818360400151856120d99190613079565b6120e39190612ec0565b905060006120f18286612ead565b9050476120fd8261285a565b60006121098247612ead565b9050600086604001518661211d9190612ead565b6121279083612ec0565b9050600087604001518261213b9190613079565b9050801561214d5761214d86826129ec565b6020880151600090612160846002613079565b61216a9190613079565b9050801561218857600754612188906001600160a01b031682612ac7565b50505050505050505b5050600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff169055565b6001600160a01b03851660009081526004602052604081205460ff161580156121ff57506001600160a01b03851660009081526004602052604090205460ff16155b80156122195750600f54600e546122169190612f73565b43105b9050600061222985858585611f71565b6001600160a01b03881660009081526005602052604090205490915060ff161561228b576001600160a01b038716600090815260026020526040902054612271908690612ead565b6001600160a01b0388166000908152600260205260409020555b6001600160a01b03861660009081526005602052604090205460ff16156122ee5760a08101516001600160a01b0387166000908152600260205260409020546122d49190612f73565b6001600160a01b0387166000908152600260205260409020555b80516001600160a01b0388166000908152600160205260409020546123139190612ead565b6001600160a01b038089166000908152600160209081526040808320949094558401519189168152919091205461234a9190612f73565b6001600160a01b038716600090815260016020526040908190209190915581015115158061237c575060008160c00151115b156123935761239381604001518260c00151612be5565b6000816080015111806123ab57506000816101000151115b1561241f576123c38160800151826101000151612c1a565b306001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e0015184610100015161240d9190612f73565b60405190815260200160405180910390a35b600081606001511180612436575060008160e00151115b1561244d5761244d81606001518260e00151612c90565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360a0015160405161249691815260200190565b60405180910390a350505050505050565b600c54600b546000918291825b6008548110156125f9578260016000600884815481106124d6576124d6612efb565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612541575081600260006008848154811061251a5761251a612efb565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561255757600c54600b54945094505050509091565b600160006008838154811061256e5761256e612efb565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461259d9084612ead565b925060026000600883815481106125b6576125b6612efb565b60009182526020808320909101546001600160a01b031683528201929092526040019020546125e59083612ead565b9150806125f181612f59565b9150506124b4565b50600b54600c5461260a9190612ec0565b82101561262157600c54600b549350935050509091565b90939092509050565b6126796040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8361268a5760a08101859052611ff8565b6126ae60405180606001604052806000815260200160008152602001600081525090565b8380156126b9575082155b156126e55750604080516060810182526013548152601454602082015260155491810191909152612734565b826127115750604080516060810182526010548152601154602082015260125491810191909152612734565b506040805160608101825260165481526017546020820152601854918101919091525b80516064906127439088613079565b61274d9190612ec0565b60c083015260208101516064906127649088613079565b61276e9190612ec0565b60e083015260408101516064906127859088613079565b61278f9190612ec0565b610100830181905260e083015160c08401516127ab9089612ead565b6127b59190612ead565b6127bf9190612ead565b60a083015250949350505050565b6000808080806127dd8689613079565b9450866127f55750839250600091508190508061284f565b858960c001516128059190613079565b9250858960e001516128179190613079565b91508589610100015161282a9190613079565b905080826128388588612ead565b6128429190612ead565b61284c9190612ead565b93505b945094509450945094565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061288f5761288f612efb565b60200260200101906001600160a01b031690816001600160a01b031681525050600960039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612902573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292691906130ad565b8160018151811061293957612939612efb565b6001600160a01b03928316602091820292909201015260095461296691309163010000009004168461198e565b6009546040517f791ac94700000000000000000000000000000000000000000000000000000000815263010000009091046001600160a01b03169063791ac947906129be9085906000908690309042906004016130ca565b600060405180830381600087803b1580156129d857600080fd5b505af1158015611f46573d6000803e3d6000fd5b600954612a0b903090630100000090046001600160a01b03168461198e565b6009546006546040517ff305d7190000000000000000000000000000000000000000000000000000000081523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a48201526301000000909204169063f305d71990839060c40160606040518083038185885af1158015612a9b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ac0919061313b565b5050505050565b80471015612b175760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108f5565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612b64576040519150601f19603f3d011682016040523d82523d6000602084013e612b69565b606091505b5050905080612be05760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108f5565b505050565b81600c6000828254612bf79190612ead565b909155505060198054829190600090612c11908490612f73565b90915550505050565b8060196002016000828254612c2f9190612f73565b90915550503060009081526005602052604090205460ff1615612c71573060009081526002602052604081208054839290612c6b908490612f73565b90915550505b3060009081526001602052604081208054849290612c11908490612f73565b8060196001016000828254612c2f9190612f73565b600060208083528351808285015260005b81811015612cd257858101830151858201604001528201612cb6565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6001600160a01b038116811461198b57600080fd5b60008060408385031215612d3957600080fd5b8235612d4481612d11565b946020939093013593505050565b600080600060608486031215612d6757600080fd5b8335612d7281612d11565b92506020840135612d8281612d11565b929592945050506040919091013590565b600060208284031215612da557600080fd5b5035919050565b600060208284031215612dbe57600080fd5b8135610b1781612d11565b801515811461198b57600080fd5b60008060408385031215612dea57600080fd5b823591506020830135612dfc81612dc9565b809150509250929050565b600080600060608486031215612e1c57600080fd5b505081359360208301359350604090920135919050565b600060208284031215612e4557600080fd5b8135610b1781612dc9565b60008060408385031215612e6357600080fd5b8235612e6e81612d11565b91506020830135612dfc81612d11565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561089957610899612e7e565b600082612ef6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006000198203612f6c57612f6c612e7e565b5060010190565b8082018082111561089957610899612e7e565b600181815b80851115612fc1578160001904821115612fa757612fa7612e7e565b80851615612fb457918102915b93841c9390800290612f8b565b509250929050565b600082612fd857506001610899565b81612fe557506000610899565b8160018114612ffb576002811461300557613021565b6001915050610899565b60ff84111561301657613016612e7e565b50506001821b610899565b5060208310610133831016604e8410600b8410161715613044575081810a610899565b61304e8383612f86565b806000190482111561306257613062612e7e565b029392505050565b6000610b1760ff841683612fc9565b808202811582820484141761089957610899612e7e565b6000602082840312156130a257600080fd5b8151610b1781612dc9565b6000602082840312156130bf57600080fd5b8151610b1781612d11565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561311a5784516001600160a01b0316835293830193918301916001016130f5565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561315057600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212209f53ad246c0f2545e3a0fea08c647e9807d8c5c75b70dce705aa0f2607bc3bdf64736f6c63430008130033

Deployed Bytecode Sourcemap

3643:17497:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6376:83;;;;;;;;;;-1:-1:-1;6446:5:0;;;;;;;;;;;;;;;;;6376:83;;;;;;;:::i;:::-;;;;;;;;7113:161;;;;;;;;;;-1:-1:-1;7113:161:0;;;;;:::i;:::-;;:::i;:::-;;;1270:14:1;;1263:22;1245:41;;1233:2;1218:18;7113:161:0;1105:187:1;6653:95:0;;;;;;;;;;-1:-1:-1;6733:7:0;;6653:95;;;1443:25:1;;;1431:2;1416:18;6653:95:0;1297:177:1;9179:215:0;;;;;;;;;;;;;:::i;:::-;;20671:163;;;;;;;;;;;;;:::i;7282:448::-;;;;;;;;;;-1:-1:-1;7282:448:0;;;;;:::i;:::-;;:::i;9402:250::-;;;;;;;;;;-1:-1:-1;9402:250:0;;;;;:::i;:::-;;:::i;6562:83::-;;;;;;;;;;-1:-1:-1;6562:83:0;;4412:1;2267:36:1;;2255:2;2240:18;6562:83:0;2125:184:1;10000:473:0;;;;;;;;;;-1:-1:-1;10000:473:0;;;;;:::i;:::-;;:::i;7738:207::-;;;;;;;;;;-1:-1:-1;7738:207:0;;;;;:::i;:::-;;:::i;10481:111::-;;;;;;;;;;-1:-1:-1;10481:111:0;;;;;:::i;:::-;;:::i;8654:517::-;;;;;;;;;;-1:-1:-1;8654:517:0;;;;;:::i;:::-;;:::i;4227:26::-;;;;;;;;;;-1:-1:-1;4227:26:0;;;;;;;;9660:332;;;;;;;;;;-1:-1:-1;9660:332:0;;;;;:::i;:::-;;:::i;10718:124::-;;;;;;;;;;-1:-1:-1;10718:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;10807:27:0;10783:4;10807:27;;;:18;:27;;;;;;;;;10718:124;6756:198;;;;;;;;;;-1:-1:-1;6756:198:0;;;;;:::i;:::-;;:::i;1957:94::-;;;;;;;;;;;;;:::i;4938:35::-;;;;;;;;;;-1:-1:-1;4938:35:0;;;;;;;;;;;;;;;;3205:25:1;;;3261:2;3246:18;;3239:34;;;;3289:18;;;3282:34;3193:2;3178:18;4938:35:0;3003:319:1;4105:76:0;;;;;;;;;;-1:-1:-1;4105:76:0;;;;-1:-1:-1;;;;;4105:76:0;;;;;;-1:-1:-1;;;;;3491:55:1;;;3473:74;;3461:2;3446:18;4105:76:0;3327:226:1;4028:70:0;;;;;;;;;;-1:-1:-1;4028:70:0;;;;-1:-1:-1;;;;;4028:70:0;;;8526:120;;;;;;;;;;-1:-1:-1;8526:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;8618:20:0;8594:4;8618:20;;;:11;:20;;;;;;;;;8526:120;10850:311;;;;;;;;;;-1:-1:-1;10850:311:0;;;;;:::i;:::-;;:::i;1734:87::-;;;;;;;;;;-1:-1:-1;1780:7:0;1807:6;-1:-1:-1;;;;;1807:6:0;1734:87;;20561:102;;;;;;;;;;-1:-1:-1;20561:102:0;;;;;:::i;:::-;;:::i;6467:87::-;;;;;;;;;;-1:-1:-1;6539:7:0;;;;;;;;;;;;;;;;;6467:87;;5194:36;;;;;;;;;;-1:-1:-1;5194:36:0;;;;;;;;;;;;7953:392;;;;;;;;;;-1:-1:-1;7953:392:0;;;;;:::i;:::-;;:::i;4349:19::-;;;;;;;;;;-1:-1:-1;4349:19:0;;;;-1:-1:-1;;;;;4349:19:0;;;8353:165;;;;;;;;;;-1:-1:-1;8353:165:0;;;;;:::i;:::-;;:::i;20014:195::-;;;;;;;;;;-1:-1:-1;20014:195:0;;;;;:::i;:::-;;:::i;4469:54::-;;;;;;;;;;;;;;;;11169:316;;;;;;;;;;-1:-1:-1;11169:316:0;;;;;:::i;:::-;;:::i;20217:336::-;;;;;;;;;;-1:-1:-1;20217:336:0;;;;;:::i;:::-;;:::i;20842:258::-;;;;;;;;;;-1:-1:-1;20842:258:0;;;;;:::i;:::-;;:::i;6962:143::-;;;;;;;;;;-1:-1:-1;6962:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7070:18:0;;;7043:7;7070:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6962:143;4695:54;;;;;;;;;;;;;;;;10600:110;;;;;;;;;;-1:-1:-1;10600:110:0;;;;;:::i;:::-;;:::i;2059:192::-;;;;;;;;;;-1:-1:-1;2059:192:0;;;;;:::i;:::-;;:::i;4980:39::-;;;;;;;;;;-1:-1:-1;4980:39:0;;;;;;;;;;;;4321:21;;;;;;;;;;-1:-1:-1;4321:21:0;;;;;;;-1:-1:-1;;;;;4321:21:0;;;7113:161;7188:4;7205:39;1235:10;7228:7;7237:6;7205:8;:39::i;:::-;-1:-1:-1;7262:4:0;7113:161;;;;;:::o;9179:215::-;1780:7;1807:6;-1:-1:-1;;;;;1807:6:0;1235:10;1869:23;1861:68;;;;-1:-1:-1;;;1861:68:0;;4966:2:1;1861:68:0;;;4948:21:1;;;4985:18;;;4978:30;5044:34;5024:18;;;5017:62;5096:18;;1861:68:0;;;;;;;;;9243:14:::1;::::0;::::1;;9242:15;9234:52;;;::::0;-1:-1:-1;;;9234:52:0;;5327:2:1;9234:52:0::1;::::0;::::1;5309:21:1::0;5366:2;5346:18;;;5339:30;5405:26;5385:18;;;5378:54;5449:18;;9234:52:0::1;5125:348:1::0;9234:52:0::1;9297:14;:21:::0;;9329:18;;;;;;9374:12:::1;9358:13;:28:::0;9179:215::o;20671:163::-;20781:15;;20773:53;;20741:21;;-1:-1:-1;;;;;20781:15:0;;20773:53;;;;;20741:21;;20712:26;20773:53;20712:26;20773:53;20741:21;20781:15;20773:53;;;;;;;;;;;;;;;;;;;;;20701:133;20671:163::o;7282:448::-;7414:4;7431:36;7441:6;7449:9;7460:6;7431:9;:36::i;:::-;-1:-1:-1;;;;;7507:19:0;;7480:24;7507:19;;;:11;:19;;;;;;;;1235:10;7507:33;;;;;;;;7559:26;;;;7551:79;;;;-1:-1:-1;;;7551:79:0;;5680:2:1;7551:79:0;;;5662:21:1;5719:2;5699:18;;;5692:30;5758:34;5738:18;;;5731:62;5829:10;5809:18;;;5802:38;5857:19;;7551:79:0;5478:404:1;7551:79:0;7641:57;7650:6;1235:10;7672:25;7691:6;7672:16;:25;:::i;:::-;7641:8;:57::i;:::-;-1:-1:-1;7718:4:0;;7282:448;-1:-1:-1;;;;7282:448:0:o;9402:250::-;9469:7;9508;;9497;:18;;9489:73;;;;-1:-1:-1;;;9489:73:0;;6411:2:1;9489:73:0;;;6393:21:1;6450:2;6430:18;;;6423:30;6489:34;6469:18;;;6462:62;6560:12;6540:18;;;6533:40;6590:19;;9489:73:0;6209:406:1;9489:73:0;9573:19;9595:10;:8;:10::i;:::-;9573:32;-1:-1:-1;9623:21:0;9573:32;9623:7;:21;:::i;:::-;9616:28;9402:250;-1:-1:-1;;;9402:250:0:o;10000:473::-;1780:7;1807:6;-1:-1:-1;;;;;1807:6:0;1235:10;1869:23;1861:68;;;;-1:-1:-1;;;1861:68:0;;4966:2:1;1861:68:0;;;4948:21:1;;;4985:18;;;4978:30;5044:34;5024:18;;;5017:62;5096:18;;1861:68:0;4764:356:1;1861:68:0;-1:-1:-1;;;;;10080:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10072:56;;;::::0;-1:-1:-1;;;10072:56:0;;7101:2:1;10072:56:0::1;::::0;::::1;7083:21:1::0;7140:2;7120:18;;;7113:30;7179:25;7159:18;;;7152:53;7222:18;;10072:56:0::1;6899:347:1::0;10072:56:0::1;10144:9;10139:327;10163:9;:16:::0;10159:20;::::1;10139:327;;;10221:7;-1:-1:-1::0;;;;;10205:23:0::1;:9;10215:1;10205:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;10205:12:0::1;:23:::0;10201:254:::1;;10264:9;10274:16:::0;;:20:::1;::::0;10293:1:::1;::::0;10274:20:::1;:::i;:::-;10264:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;10249:9:::1;:12:::0;;-1:-1:-1;;;;;10264:31:0;;::::1;::::0;10259:1;;10249:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;;::::1;-1:-1:-1::0;;;;;10249:46:0;;::::1;;::::0;;10314:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;10353:11:::1;:20:::0;;;;:28;;-1:-1:-1;;10353:28:0::1;::::0;;10400:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;10400:15:0;;;;;;::::1;::::0;;;;;20773:53;20701:133;20671:163::o;10201:254::-:1;10181:3:::0;::::1;::::0;::::1;:::i;:::-;;;;10139:327;;7738:207:::0;1235:10;7818:4;7867:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7867:34:0;;;;;;;;;;7818:4;;7835:80;;7858:7;;7867:47;;7904:10;;7867:47;:::i;10481:111::-;1780:7;1807:6;-1:-1:-1;;;;;1807:6:0;1235:10;1869:23;1861:68;;;;-1:-1:-1;;;1861:68:0;;4966:2:1;1861:68:0;;;4948:21:1;;;4985:18;;;4978:30;5044:34;5024:18;;;5017:62;5096:18;;1861:68:0;4764:356:1;1861:68:0;-1:-1:-1;;;;;10550:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;10550:34:0::1;10580:4;10550:34;::::0;;10481:111::o;8654:517::-;8772:7;8816;;8805;:18;;8797:62;;;;-1:-1:-1;;;8797:62:0;;8161:2:1;8797:62:0;;;8143:21:1;8200:2;8180:18;;;8173:30;8239:33;8219:18;;;8212:61;8290:18;;8797:62:0;7959:355:1;8797:62:0;8875:17;8870:294;;8909:28;8940:39;8951:7;8960:4;8966:5;8973;8940:10;:39::i;:::-;9001:9;;-1:-1:-1;8994:16:0;;-1:-1:-1;8994:16:0;8870:294;9043:28;9074:39;9085:7;9094:4;9100:5;9107;9074:10;:39::i;:::-;9135:17;;;;-1:-1:-1;9128:24:0;;-1:-1:-1;9128:24:0;9660:332;1780:7;1807:6;-1:-1:-1;;;;;1807:6:0;1235:10;1869:23;1861:68;;;;-1:-1:-1;;;1861:68:0;;4966:2:1;1861:68:0;;;4948:21:1;;;4985:18;;;4978:30;5044:34;5024:18;;;5017:62;5096:18;;1861:68:0;4764:356:1;1861:68:0;-1:-1:-1;;;;;9741:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;9740:21;9732:61;;;::::0;-1:-1:-1;;;9732:61:0;;8521:2:1;9732:61:0::1;::::0;::::1;8503:21:1::0;8560:2;8540:18;;;8533:30;8599:29;8579:18;;;8572:57;8646:18;;9732:61:0::1;8319:351:1::0;9732:61:0::1;-1:-1:-1::0;;;;;9808:16:0;::::1;9827:1;9808:16:::0;;;:7:::1;:16;::::0;;;;;:20;9804:109:::1;;-1:-1:-1::0;;;;;9884:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;9864:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;9845:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;9804:109:::1;-1:-1:-1::0;;;;;9923:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;9923:27:0::1;9946:4;9923:27:::0;;::::1;::::0;;;9961:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;9660:332::o;6756:198::-;-1:-1:-1;;;;;6846:20:0;;6822:7;6846:20;;;:11;:20;;;;;;;;6842:49;;;-1:-1:-1;;;;;;6875:16:0;;;;;:7;:16;;;;;;;6756:198::o;6842:49::-;-1:-1:-1;;;;;6929:16:0;;;;;;:7;:16;;;;;;6909:37;;:19;:37::i;1957:94::-;1780:7;1807:6;-1:-1:-1;;;;;1807:6:0;1235:10;1869:23;1861:68;;;;-1:-1:-1;;;1861:68:0;;4966:2:1;1861:68:0;;;4948:21:1;;;4985:18;;;4978:30;5044:34;5024:18;;;5017:62;5096:18;;1861:68:0;4764:356:1;1861:68:0;2022:21:::1;2040:1;2022:9;:21::i;:::-;1957:94::o:0;10850:311::-;1780:7;1807:6;-1:-1:-1;;;;;1807:6:0;1235:10;1869:23;1861:68;;;;-1:-1:-1;;;1861:68:0;;4966:2:1;1861:68:0;;;4948:21:1;;;4985:18;;;4978:30;5044:34;5024:18;;;5017:62;5096:18;;1861:68:0;4764:356:1;1861:68:0;11034:2:::1;11019:10:::0;10999:17:::1;11006:10:::0;10999:4;:17:::1;:::i;:::-;:30;;;;:::i;:::-;10998:38;;10990:80;;;::::0;-1:-1:-1;;;10990:80:0;;8877:2:1;10990:80:0::1;::::0;::::1;8859:21:1::0;8916:2;8896:18;;;8889:30;8955:31;8935:18;;;8928:59;9004:18;;10990:80:0::1;8675:353:1::0;10990:80:0::1;11089:35;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;11081:5:::1;:43:::0;;;;;;;;;;;11140:13;::::1;::::0;-1:-1:-1;;11140:13:0::1;10850:311:::0;;;:::o;20561:102::-;1780:7;1807:6;-1:-1:-1;;;;;1807:6:0;1235:10;1869:23;1861:68;;;;-1:-1:-1;;;1861:68:0;;4966:2:1;1861:68:0;;;4948:21:1;;;4985:18;;;4978:30;5044:34;5024:18;;;5017:62;5096:18;;1861:68:0;4764:356:1;1861:68:0;20633:11:::1;:22:::0;;;::::1;;;;::::0;;;::::1;::::0;;;::::1;::::0;;20561:102::o;7953:392::-;1235:10;8056:4;8105:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8105:34:0;;;;;;;;;;8158:35;;;;8150:85;;;;-1:-1:-1;;;8150:85:0;;9235:2:1;8150:85:0;;;9217:21:1;9274:2;9254:18;;;9247:30;9313:34;9293:18;;;9286:62;9384:7;9364:18;;;9357:35;9409:19;;8150:85:0;9033:401:1;8150:85:0;8246:67;1235:10;8269:7;8278:34;8297:15;8278:16;:34;:::i;8246:67::-;-1:-1:-1;8333:4:0;;7953:392;-1:-1:-1;;;7953:392:0:o;8353:165::-;8431:4;8448:40;8458:10;8470:9;8481:6;8448:9;:40::i;20014:195::-;1780:7;1807:6;-1:-1:-1;;;;;1807:6:0;1235:10;1869:23;1861:68;;;;-1:-1:-1;;;1861:68:0;;4966:2:1;1861:68:0;;;4948:21:1;;;4985:18;;;4978:30;5044:34;5024:18;;;5017:62;5096:18;;1861:68:0;4764:356:1;1861:68:0;-1:-1:-1;;;;;20102:23:0;::::1;20094:69;;;::::0;-1:-1:-1;;;20094:69:0;;9641:2:1;20094:69:0::1;::::0;::::1;9623:21:1::0;9680:2;9660:18;;;9653:30;9719:34;9699:18;;;9692:62;9790:4;9770:18;;;9763:32;9812:19;;20094:69:0::1;9439:398:1::0;20094:69:0::1;20174:15;:27:::0;;;::::1;-1:-1:-1::0;;;;;20174:27:0;;;::::1;::::0;;;::::1;::::0;;20014:195::o;11169:316::-;1780:7;1807:6;-1:-1:-1;;;;;1807:6:0;1235:10;1869:23;1861:68;;;;-1:-1:-1;;;1861:68:0;;4966:2:1;1861:68:0;;;4948:21:1;;;4985:18;;;4978:30;5044:34;5024:18;;;5017:62;5096:18;;1861:68:0;4764:356:1;1861:68:0;11354:2:::1;11339:10:::0;11319:17:::1;11326:10:::0;11319:4;:17:::1;:::i;:::-;:30;;;;:::i;:::-;11318:38;;11310:80;;;::::0;-1:-1:-1;;;11310:80:0;;8877:2:1;11310:80:0::1;::::0;::::1;8859:21:1::0;8916:2;8896:18;;;8889:30;8955:31;8935:18;;;8928:59;9004:18;;11310:80:0::1;8675:353:1::0;11310:80:0::1;11413:35;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;11401:9:::1;:47:::0;;;;;;;;;;;11464:13;::::1;::::0;-1:-1:-1;;11464:13:0::1;11169:316:::0;;;:::o;20217:336::-;1780:7;1807:6;-1:-1:-1;;;;;1807:6:0;1235:10;1869:23;1861:68;;;;-1:-1:-1;;;1861:68:0;;4966:2:1;1861:68:0;;;4948:21:1;;;4985:18;;;4978:30;5044:34;5024:18;;;5017:62;5096:18;;1861:68:0;4764:356:1;1861:68:0;20315:11:::1;20305:6;:21;;20297:91;;;::::0;-1:-1:-1;;;20297:91:0;;10044:2:1;20297:91:0::1;::::0;::::1;10026:21:1::0;10083:2;10063:18;;;10056:30;10122:34;10102:18;;;10095:62;10193:27;10173:18;;;10166:55;10238:19;;20297:91:0::1;9842:421:1::0;20297:91:0::1;20417:10;20407:6;:20;;20399:92;;;::::0;-1:-1:-1;;;20399:92:0;;10470:2:1;20399:92:0::1;::::0;::::1;10452:21:1::0;10509:2;10489:18;;;10482:30;10548:34;10528:18;;;10521:62;10619:29;10599:18;;;10592:57;10666:19;;20399:92:0::1;10268:423:1::0;20399:92:0::1;20532:13;4412:1;20532:2;:13;:::i;:::-;20523:22;::::0;:6;:22:::1;:::i;:::-;20502:18;:43:::0;-1:-1:-1;20217:336:0:o;20842:258::-;1780:7;1807:6;-1:-1:-1;;;;;1807:6:0;1235:10;1869:23;1861:68;;;;-1:-1:-1;;;1861:68:0;;4966:2:1;1861:68:0;;;4948:21:1;;;4985:18;;;4978:30;5044:34;5024:18;;;5017:62;5096:18;;1861:68:0;4764:356:1;1861:68:0;20976:4:::1;-1:-1:-1::0;;;;;20954:27:0;::::1;::::0;20946:94:::1;;;::::0;-1:-1:-1;;;20946:94:0;;12574:2:1;20946:94:0::1;::::0;::::1;12556:21:1::0;12613:2;12593:18;;;12586:30;12652:34;12632:18;;;12625:62;12723:24;12703:18;;;12696:52;12765:19;;20946:94:0::1;12372:418:1::0;20946:94:0::1;21051:41;::::0;;;;-1:-1:-1;;;;;12987:55:1;;;21051:41:0::1;::::0;::::1;12969:74:1::0;13059:18;;;13052:34;;;21051:27:0;::::1;::::0;::::1;::::0;12942:18:1;;21051:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20842:258:::0;;;:::o;10600:110::-;1780:7;1807:6;-1:-1:-1;;;;;1807:6:0;1235:10;1869:23;1861:68;;;;-1:-1:-1;;;1861:68:0;;4966:2:1;1861:68:0;;;4948:21:1;;;4985:18;;;4978:30;5044:34;5024:18;;;5017:62;5096:18;;1861:68:0;4764:356:1;1861:68:0;-1:-1:-1;;;;;10667:27:0::1;10697:5;10667:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;10667:35:0::1;::::0;;10600:110::o;2059:192::-;1780:7;1807:6;-1:-1:-1;;;;;1807:6:0;1235:10;1869:23;1861:68;;;;-1:-1:-1;;;1861:68:0;;4966:2:1;1861:68:0;;;4948:21:1;;;4985:18;;;4978:30;5044:34;5024:18;;;5017:62;5096:18;;1861:68:0;4764:356:1;1861:68:0;-1:-1:-1;;;;;2148:22:0;::::1;2140:73;;;::::0;-1:-1:-1;;;2140:73:0;;13549:2:1;2140:73:0::1;::::0;::::1;13531:21:1::0;13588:2;13568:18;;;13561:30;13627:34;13607:18;;;13600:62;13698:8;13678:18;;;13671:36;13724:19;;2140:73:0::1;13347:402:1::0;2140:73:0::1;2224:19;2234:8;2224:9;:19::i;:::-;2059:192:::0;:::o;15131:369::-;-1:-1:-1;;;;;15258:19:0;;15250:68;;;;-1:-1:-1;;;15250:68:0;;13956:2:1;15250:68:0;;;13938:21:1;13995:2;13975:18;;;13968:30;14034:34;14014:18;;;14007:62;14105:6;14085:18;;;14078:34;14129:19;;15250:68:0;13754:400:1;15250:68:0;-1:-1:-1;;;;;15337:21:0;;15329:68;;;;-1:-1:-1;;;15329:68:0;;14361:2:1;15329:68:0;;;14343:21:1;14400:2;14380:18;;;14373:30;14439:34;14419:18;;;14412:62;14510:4;14490:18;;;14483:32;14532:19;;15329:68:0;14159:398:1;15329:68:0;-1:-1:-1;;;;;15408:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15460:32;;1443:25:1;;;15460:32:0;;1416:18:1;15460:32:0;;;;;;;15131:369;;;:::o;15508:1301::-;-1:-1:-1;;;;;15630:18:0;;15622:68;;;;-1:-1:-1;;;15622:68:0;;14764:2:1;15622:68:0;;;14746:21:1;14803:2;14783:18;;;14776:30;14842:34;14822:18;;;14815:62;14913:7;14893:18;;;14886:35;14938:19;;15622:68:0;14562:401:1;15622:68:0;-1:-1:-1;;;;;15709:16:0;;15701:64;;;;-1:-1:-1;;;15701:64:0;;15170:2:1;15701:64:0;;;15152:21:1;15209:2;15189:18;;;15182:30;15248:34;15228:18;;;15221:62;15319:5;15299:18;;;15292:33;15342:19;;15701:64:0;14968:399:1;15701:64:0;15793:1;15784:6;:10;15776:64;;;;-1:-1:-1;;;15776:64:0;;15574:2:1;15776:64:0;;;15556:21:1;15613:2;15593:18;;;15586:30;15652:34;15632:18;;;15625:62;15723:11;15703:18;;;15696:39;15752:19;;15776:64:0;15372:405:1;15776:64:0;15869:15;15879:4;15869:9;:15::i;:::-;15859:6;:25;;15851:86;;;;-1:-1:-1;;;15851:86:0;;15984:2:1;15851:86:0;;;15966:21:1;16023:2;16003:18;;;15996:30;16062:34;16042:18;;;16035:62;16133:19;16113:18;;;16106:47;16170:19;;15851:86:0;15782:413:1;15851:86:0;-1:-1:-1;;;;;15955:24:0;;;;;;:18;:24;;;;;;;;15954:25;:52;;;;-1:-1:-1;;;;;;15984:22:0;;;;;;:18;:22;;;;;;;;15983:23;15954:52;15950:130;;;16031:14;;;;16023:45;;;;-1:-1:-1;;;16023:45:0;;16402:2:1;16023:45:0;;;16384:21:1;16441:2;16421:18;;;16414:30;16480:20;16460:18;;;16453:48;16518:18;;16023:45:0;16200:342:1;16023:45:0;16092:12;16135:18;;16107:24;16125:4;16107:9;:24::i;:::-;16169:8;;-1:-1:-1;;16107:46:0;;-1:-1:-1;16169:8:0;;;;;16168:9;:24;;;;-1:-1:-1;16181:11:0;;;;;;;16168:24;:35;;;;;16196:7;16168:35;:51;;;;-1:-1:-1;16215:4:0;;-1:-1:-1;;;;;16207:12:0;;;16215:4;;16207:12;;16168:51;:80;;;;-1:-1:-1;;;;;;16224:24:0;;;;;;:18;:24;;;;;;;;16223:25;16168:80;:117;;;;-1:-1:-1;;;;;;16263:22:0;;;;;;:18;:22;;;;;;;;16262:23;16168:117;16164:282;;;16322:4;;-1:-1:-1;;;;;16322:4:0;;;16316:10;;;;16312:122;;16343:18;;16328:45;;;;;;;;16363:9;16328:45;;;;;;;;;;;;;;;;;;;;16343:18;16328:14;:45::i;:::-;16312:122;;;16408:18;;16393:41;;;;;;;;16428:5;16393:41;;;;;;;;;;;;;;;;;;;;16408:18;16393:14;:41::i;:::-;16520:8;;16471:4;;16456:12;;16520:8;;;;;;:36;;-1:-1:-1;;;;;;16532:24:0;;;;;;:18;:24;;;;;;;;16520:36;:62;;;-1:-1:-1;;;;;;16560:22:0;;;;;;:18;:22;;;;;;;;16520:62;16516:83;;;16594:5;16584:15;;16516:83;16620:4;;-1:-1:-1;;;;;16620:4:0;;;16614:10;;;;16610:29;;-1:-1:-1;16635:4:0;16610:29;16662:4;;-1:-1:-1;;;;;16654:12:0;;;16662:4;;16654:12;;;;:26;;-1:-1:-1;16676:4:0;;-1:-1:-1;;;;;16670:10:0;;;16676:4;;16670:10;;16654:26;16650:83;;;16717:5;16707:15;;16650:83;16752:49;16767:4;16773:2;16777:6;16785:7;16794:6;16752:14;:49::i;:::-;15611:1198;;;15508:1301;;;:::o;14390:161::-;14432:7;14453:15;14470;14489:19;:17;:19::i;:::-;14452:56;;-1:-1:-1;14452:56:0;-1:-1:-1;14526:17:0;14452:56;;14526:17;:::i;:::-;14519:24;;;;14390:161;:::o;12205:553::-;12353:36;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12353:36:0;12414:51;12426:7;12435;12444:6;12452:12;12414:11;:51::i;:::-;12402:63;;12661:53;12674:9;12685:7;12694;12703:10;:8;:10::i;:::-;12661:12;:53::i;:::-;12627:20;;;12476:238;12592:20;;;12476:238;12563:14;;;12476:238;12523:25;;;12476:238;;;12205:553;;;;;;;:::o;2259:173::-;2315:16;2334:6;;-1:-1:-1;;;;;2351:17:0;;;;;;;;;;2384:40;;2334:6;;;;;;;2384:40;;2315:16;2384:40;2304:128;2259:173;:::o;18081:1030::-;5598:8;:15;;;;;;;;18233:14:::1;::::0;::::1;::::0;18203::::1;::::0;::::1;::::0;5598:15;;18203:44:::1;::::0;::::1;:::i;:::-;18202:50;::::0;18251:1:::1;18202:50;:::i;:::-;18180:72;;18269:11;18284:1;18269:16:::0;18265:54:::1;;18301:7;;;18265:54;18331:32;18403:11;18385:4;:14;;;18367:15;:32;;;;:::i;:::-;18366:48;;;;:::i;:::-;18331:83:::0;-1:-1:-1;18425:14:0::1;18442:42;18331:83:::0;18442:15;:42:::1;:::i;:::-;18425:59:::0;-1:-1:-1;18520:21:0::1;18552:24;18425:59:::0;18552:16:::1;:24::i;:::-;18587:20;18610:38;18634:14:::0;18610:21:::1;:38;:::i;:::-;18587:61;;18659:19;18711:4;:14;;;18697:11;:28;;;;:::i;:::-;18681:45;::::0;:12;:45:::1;:::i;:::-;18659:67;;18737:29;18783:4;:14;;;18769:11;:28;;;;:::i;:::-;18737:60:::0;-1:-1:-1;18814:25:0;;18810:119:::1;;18856:61;18869:24;18895:21;18856:12;:61::i;:::-;18982:14;::::0;::::1;::::0;18941:20:::1;::::0;18964:15:::1;:11:::0;18978:1:::1;18964:15;:::i;:::-;:32;;;;:::i;:::-;18941:55:::0;-1:-1:-1;19011:16:0;;19007:97:::1;;19052:15;::::0;19044:48:::1;::::0;-1:-1:-1;;;;;19052:15:0::1;19079:12:::0;19044:34:::1;:48::i;:::-;18169:942;;;;;;;;5624:1;-1:-1:-1::0;;5636:8:0;:16;;;;;;18081:1030::o;16817:1256::-;-1:-1:-1;;;;;16956:26:0;;16935:17;16956:26;;;:18;:26;;;;;;;;16955:27;:61;;;;-1:-1:-1;;;;;;16987:29:0;;;;;;:18;:29;;;;;;;;16986:30;16955:61;:104;;;;;17051:8;;17035:13;;:24;;;;:::i;:::-;17020:12;:39;16955:104;16935:124;;17072:28;17103:50;17114:7;17123;17132:6;17140:12;17103:10;:50::i;:::-;-1:-1:-1;;;;;17170:19:0;;;;;;:11;:19;;;;;;17072:81;;-1:-1:-1;17170:19:0;;17166:124;;;-1:-1:-1;;;;;17253:15:0;;;;;;:7;:15;;;;;;:25;;17271:7;;17253:25;:::i;:::-;-1:-1:-1;;;;;17235:15:0;;;;;;:7;:15;;;;;:43;17166:124;-1:-1:-1;;;;;17304:22:0;;;;;;:11;:22;;;;;;;;17300:141;;;17412:17;;;;-1:-1:-1;;;;;17391:18:0;;;;;;:7;:18;;;;;;:38;;17412:17;17391:38;:::i;:::-;-1:-1:-1;;;;;17370:18:0;;;;;;:7;:18;;;;;:59;17300:141;17489:9;;-1:-1:-1;;;;;17471:15:0;;17489:9;17471:15;;;:7;:15;;;;;;:27;;17489:9;17471:27;:::i;:::-;-1:-1:-1;;;;;17453:15:0;;;;;;;:7;:15;;;;;;;;:45;;;;17551:17;;;17530:18;;;;;;;;;;:38;;17551:17;17530:38;:::i;:::-;-1:-1:-1;;;;;17509:18:0;;;;;;:7;:18;;;;;;;:59;;;;17585:6;;;:10;;;:24;;;17608:1;17599;:6;;;:10;17585:24;17581:57;;;17611:27;17623:1;:6;;;17631:1;:6;;;17611:11;:27::i;:::-;17668:1;17653;:12;;;:16;:36;;;;17688:1;17673;:12;;;:16;17653:36;17649:257;;;17706:42;17721:1;:12;;;17735:1;:12;;;17706:14;:42::i;:::-;17828:4;-1:-1:-1;;;;;17768:126:0;17795:6;-1:-1:-1;;;;;17768:126:0;;17867:1;:12;;;17852:1;:12;;;:27;;;;:::i;:::-;17768:126;;1443:25:1;;;1431:2;1416:18;17768:126:0;;;;;;;17649:257;17935:1;17920;:12;;;:16;:36;;;;17955:1;17940;:12;;;:16;17920:36;17916:87;;;17958:45;17976:1;:12;;;17990:1;:12;;;17958:17;:45::i;:::-;18036:9;-1:-1:-1;;;;;18019:46:0;18028:6;-1:-1:-1;;;;;18019:46:0;;18047:1;:17;;;18019:46;;;;1443:25:1;;1431:2;1416:18;;1297:177;18019:46:0;;;;;;;;16924:1149;;16817:1256;;;;;:::o;14559:564::-;14657:7;;14693;;14610;;;;;14711:300;14735:9;:16;14731:20;;14711:300;;;14801:7;14777;:21;14785:9;14795:1;14785:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14785:12:0;14777:21;;;;;;;;;;;;;:31;;:66;;;14836:7;14812;:21;14820:9;14830:1;14820:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14820:12:0;14812:21;;;;;;;;;;;;;:31;14777:66;14773:114;;;14870:7;;14879;;14862:25;;;;;;;14559:564;;:::o;14773:114::-;14922:7;:21;14930:9;14940:1;14930:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14930:12:0;14922:21;;;;;;;;;;;;;14912:31;;:7;:31;:::i;:::-;14902:41;;14978:7;:21;14986:9;14996:1;14986:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14986:12:0;14978:21;;;;;;;;;;;;;14968:31;;:7;:31;:::i;:::-;14958:41;-1:-1:-1;14753:3:0;;;;:::i;:::-;;;;14711:300;;;;15045:7;;15035;;:17;;;;:::i;:::-;15025:7;:27;15021:58;;;15062:7;;15071;;15054:25;;;;;;14559:564;;:::o;15021:58::-;15098:7;;15107;;-1:-1:-1;14559:564:0;-1:-1:-1;14559:564:0:o;12766:763::-;12915:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12915:28:0;12961:7;12956:91;;12985:17;;;:27;;;13027:8;;12956:91;13057:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;13057:17:0;13089:6;:23;;;;;13100:12;13099:13;13089:23;13085:124;;;-1:-1:-1;13114:16:0;;;;;;;;13121:9;13114:16;;;;;;;;;;;;;;;;;;13085:124;;;13151:12;13146:63;;-1:-1:-1;13165:12:0;;;;;;;;13172:5;13165:12;;;;;;;;;;;;;;;;;;13146:63;;;-1:-1:-1;13193:16:0;;;;;;;;13200:9;13193:16;;;;;;;;;;;;;;;;;;13146:63;13242:8;;13254:3;;13232:18;;:7;:18;:::i;:::-;13231:26;;;;:::i;:::-;13222:6;;;:35;13294:14;;;;13312:3;;13284:24;;:7;:24;:::i;:::-;13283:32;;;;:::i;:::-;13268:12;;;:47;13352:14;;;;13370:3;;13342:24;;:7;:24;:::i;:::-;13341:32;;;;:::i;:::-;13326:12;;;:47;;;13462:12;;;;13440:6;;;;13417:29;;:7;:29;:::i;:::-;:57;;;;:::i;:::-;:85;;;;:::i;:::-;13384:17;;;:118;-1:-1:-1;12766:763:0;;;;;;:::o;13537:845::-;13747:15;;;;;13931:21;13941:11;13931:7;:21;:::i;:::-;13921:31;;13970:7;13965:75;;-1:-1:-1;14002:7:0;;-1:-1:-1;14020:1:0;;-1:-1:-1;14020:1:0;;-1:-1:-1;14020:1:0;13994:34;;13965:75;14068:11;14059:1;:6;;;:20;;;;:::i;:::-;14052:27;;14118:11;14103:1;:12;;;:26;;;;:::i;:::-;14090:39;;14168:11;14153:1;:12;;;:26;;;;:::i;:::-;14140:39;-1:-1:-1;14140:39:0;14264:10;14221:27;14244:4;14221:7;:27;:::i;:::-;:53;;;;:::i;:::-;:79;;;;:::i;:::-;14190:110;;13537:845;;;;;;;;;;:::o;19530:476::-;19620:16;;;19634:1;19620:16;;;;;;;;19596:21;;19620:16;;;;;;;;;;-1:-1:-1;19620:16:0;19596:40;;19665:4;19647;19652:1;19647:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;19647:23:0;;;-1:-1:-1;;;;;19647:23:0;;;;;19691:6;;;;;;;;;-1:-1:-1;;;;;19691:6:0;-1:-1:-1;;;;;19691:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19681:4;19686:1;19681:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19681:23:0;;;:7;;;;;;;;;:23;19749:6;;19717:53;;19734:4;;19749:6;;;;19758:11;19717:8;:53::i;:::-;19783:6;;:215;;;;;:6;;;;-1:-1:-1;;;;;19783:6:0;;:57;;:215;;19855:11;;19881:1;;19925:4;;19952;;19972:15;;19783:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19119:403;19232:6;;19200:53;;19217:4;;19232:6;;;-1:-1:-1;;;;;19232:6:0;19241:11;19200:8;:53::i;:::-;19266:6;;19463:10;;19266:248;;;;;19331:4;19266:248;;;18387:34:1;18437:18;;;18430:34;;;19377:1:0;18480:18:1;;;18473:34;;;18523:18;;;18516:34;-1:-1:-1;;;;;19463:10:0;;;18566:19:1;;;18559:44;19488:15:0;18619:19:1;;;18612:35;19266:6:0;;;;;;:22;;19297:9;;18298:19:1;;19266:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19119:403;;:::o;3317:319::-;3432:6;3407:21;:31;;3399:73;;;;-1:-1:-1;;;3399:73:0;;19171:2:1;3399:73:0;;;19153:21:1;19210:2;19190:18;;;19183:30;19249:31;19229:18;;;19222:59;19298:18;;3399:73:0;18969:353:1;3399:73:0;3486:12;3504:9;-1:-1:-1;;;;;3504:14:0;3527:6;3504:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3485:54;;;3558:7;3550:78;;;;-1:-1:-1;;;3550:78:0;;19739:2:1;3550:78:0;;;19721:21:1;19778:2;19758:18;;;19751:30;19817:34;19797:18;;;19790:62;19888:28;19868:18;;;19861:56;19934:19;;3550:78:0;19537:422:1;3550:78:0;3388:248;3317:319;;:::o;11493:125::-;11572:4;11561:7;;:15;;;;;;;:::i;:::-;;;;-1:-1:-1;;11587:11:0;:23;;11606:4;;11587:11;:15;;:23;;11606:4;;11587:23;:::i;:::-;;;;-1:-1:-1;;;;11493:125:0:o;11626:280::-;11734:10;11709:11;:21;;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;11781:4:0;11761:26;;;;:11;:26;;;;;;;;11757:95;;;11820:4;11804:22;;;;:7;:22;;;;;:36;;11830:10;;11804:22;:36;;11830:10;;11804:36;:::i;:::-;;;;-1:-1:-1;;11757:95:0;11878:4;11862:22;;;;:7;:22;;;;;:36;;11888:10;;11862:22;:36;;11888:10;;11862:36;:::i;11914:283::-;12025:10;12000:11;:21;;;:35;;;;;;;:::i;14:607:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;612:2;542:66;537:2;529:6;525:15;521:88;510:9;506:104;502:113;494:121;;;;14:607;;;;:::o;626:154::-;-1:-1:-1;;;;;705:5:1;701:54;694:5;691:65;681:93;;770:1;767;760:12;785:315;853:6;861;914:2;902:9;893:7;889:23;885:32;882:52;;;930:1;927;920:12;882:52;969:9;956:23;988:31;1013:5;988:31;:::i;:::-;1038:5;1090:2;1075:18;;;;1062:32;;-1:-1:-1;;;785:315:1:o;1479:456::-;1556:6;1564;1572;1625:2;1613:9;1604:7;1600:23;1596:32;1593:52;;;1641:1;1638;1631:12;1593:52;1680:9;1667:23;1699:31;1724:5;1699:31;:::i;:::-;1749:5;-1:-1:-1;1806:2:1;1791:18;;1778:32;1819:33;1778:32;1819:33;:::i;:::-;1479:456;;1871:7;;-1:-1:-1;;;1925:2:1;1910:18;;;;1897:32;;1479:456::o;1940:180::-;1999:6;2052:2;2040:9;2031:7;2027:23;2023:32;2020:52;;;2068:1;2065;2058:12;2020:52;-1:-1:-1;2091:23:1;;1940:180;-1:-1:-1;1940:180:1:o;2314:247::-;2373:6;2426:2;2414:9;2405:7;2401:23;2397:32;2394:52;;;2442:1;2439;2432:12;2394:52;2481:9;2468:23;2500:31;2525:5;2500:31;:::i;2566:118::-;2652:5;2645:13;2638:21;2631:5;2628:32;2618:60;;2674:1;2671;2664:12;2689:309;2754:6;2762;2815:2;2803:9;2794:7;2790:23;2786:32;2783:52;;;2831:1;2828;2821:12;2783:52;2867:9;2854:23;2844:33;;2927:2;2916:9;2912:18;2899:32;2940:28;2962:5;2940:28;:::i;:::-;2987:5;2977:15;;;2689:309;;;;;:::o;3558:316::-;3635:6;3643;3651;3704:2;3692:9;3683:7;3679:23;3675:32;3672:52;;;3720:1;3717;3710:12;3672:52;-1:-1:-1;;3743:23:1;;;3813:2;3798:18;;3785:32;;-1:-1:-1;3864:2:1;3849:18;;;3836:32;;3558:316;-1:-1:-1;3558:316:1:o;3879:241::-;3935:6;3988:2;3976:9;3967:7;3963:23;3959:32;3956:52;;;4004:1;4001;3994:12;3956:52;4043:9;4030:23;4062:28;4084:5;4062:28;:::i;4125:388::-;4193:6;4201;4254:2;4242:9;4233:7;4229:23;4225:32;4222:52;;;4270:1;4267;4260:12;4222:52;4309:9;4296:23;4328:31;4353:5;4328:31;:::i;:::-;4378:5;-1:-1:-1;4435:2:1;4420:18;;4407:32;4448:33;4407:32;4448:33;:::i;5887:184::-;5939:77;5936:1;5929:88;6036:4;6033:1;6026:15;6060:4;6057:1;6050:15;6076:128;6143:9;;;6164:11;;;6161:37;;;6178:18;;:::i;6620:274::-;6660:1;6686;6676:189;;6721:77;6718:1;6711:88;6822:4;6819:1;6812:15;6850:4;6847:1;6840:15;6676:189;-1:-1:-1;6879:9:1;;6620:274::o;7251:184::-;7303:77;7300:1;7293:88;7400:4;7397:1;7390:15;7424:4;7421:1;7414:15;7440:184;7492:77;7489:1;7482:88;7589:4;7586:1;7579:15;7613:4;7610:1;7603:15;7629:195;7668:3;-1:-1:-1;;7692:5:1;7689:77;7686:103;;7769:18;;:::i;:::-;-1:-1:-1;7816:1:1;7805:13;;7629:195::o;7829:125::-;7894:9;;;7915:10;;;7912:36;;;7928:18;;:::i;10696:482::-;10785:1;10828:5;10785:1;10842:330;10863:7;10853:8;10850:21;10842:330;;;10982:4;-1:-1:-1;;10910:77:1;10904:4;10901:87;10898:113;;;10991:18;;:::i;:::-;11041:7;11031:8;11027:22;11024:55;;;11061:16;;;;11024:55;11140:22;;;;11100:15;;;;10842:330;;;10846:3;10696:482;;;;;:::o;11183:866::-;11232:5;11262:8;11252:80;;-1:-1:-1;11303:1:1;11317:5;;11252:80;11351:4;11341:76;;-1:-1:-1;11388:1:1;11402:5;;11341:76;11433:4;11451:1;11446:59;;;;11519:1;11514:130;;;;11426:218;;11446:59;11476:1;11467:10;;11490:5;;;11514:130;11551:3;11541:8;11538:17;11535:43;;;11558:18;;:::i;:::-;-1:-1:-1;;11614:1:1;11600:16;;11629:5;;11426:218;;11728:2;11718:8;11715:16;11709:3;11703:4;11700:13;11696:36;11690:2;11680:8;11677:16;11672:2;11666:4;11663:12;11659:35;11656:77;11653:159;;;-1:-1:-1;11765:19:1;;;11797:5;;11653:159;11844:34;11869:8;11863:4;11844:34;:::i;:::-;11974:6;-1:-1:-1;;11902:79:1;11893:7;11890:92;11887:118;;;11985:18;;:::i;:::-;12023:20;;11183:866;-1:-1:-1;;;11183:866:1:o;12054:140::-;12112:5;12141:47;12182:4;12172:8;12168:19;12162:4;12141:47;:::i;12199:168::-;12272:9;;;12303;;12320:15;;;12314:22;;12300:37;12290:71;;12341:18;;:::i;13097:245::-;13164:6;13217:2;13205:9;13196:7;13192:23;13188:32;13185:52;;;13233:1;13230;13223:12;13185:52;13265:9;13259:16;13284:28;13306:5;13284:28;:::i;16736:251::-;16806:6;16859:2;16847:9;16838:7;16834:23;16830:32;16827:52;;;16875:1;16872;16865:12;16827:52;16907:9;16901:16;16926:31;16951:5;16926:31;:::i;16992:1026::-;17254:4;17302:3;17291:9;17287:19;17333:6;17322:9;17315:25;17359:2;17397:6;17392:2;17381:9;17377:18;17370:34;17440:3;17435:2;17424:9;17420:18;17413:31;17464:6;17499;17493:13;17530:6;17522;17515:22;17568:3;17557:9;17553:19;17546:26;;17607:2;17599:6;17595:15;17581:29;;17628:1;17638:218;17652:6;17649:1;17646:13;17638:218;;;17717:13;;-1:-1:-1;;;;;17713:62:1;17701:75;;17831:15;;;;17796:12;;;;17674:1;17667:9;17638:218;;;-1:-1:-1;;;;;;;17912:55:1;;;;17907:2;17892:18;;17885:83;-1:-1:-1;;;17999:3:1;17984:19;17977:35;17873:3;16992:1026;-1:-1:-1;;;16992:1026:1:o;18658:306::-;18746:6;18754;18762;18815:2;18803:9;18794:7;18790:23;18786:32;18783:52;;;18831:1;18828;18821:12;18783:52;18860:9;18854:16;18844:26;;18910:2;18899:9;18895:18;18889:25;18879:35;;18954:2;18943:9;18939:18;18933:25;18923:35;;18658:306;;;;;:::o

Swarm Source

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