ETH Price: $2,962.89 (-1.65%)
Gas: 2 Gwei

Token

Scorch (OTC)
 

Overview

Max Total Supply

9,568,892.485441912558880038 OTC

Holders

181

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000001 OTC

Value
$0.00
0x55c86dbfe6caca28bb12e9df39871f9b9bb17f09
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:
Scorch

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-02
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.19;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

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

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

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

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        return _functionCallWithValue(target, data, value, errorMessage);
    }

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

        (bool success, bytes memory returndata) = target.call{value: weiValue}(
            data
        );
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

    function allPairs(uint) external view returns (address pair);

    function allPairsLength() external view returns (uint);

    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint);

    function balanceOf(address owner) external view returns (uint);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);

    function transfer(address to, uint value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint);

    function permit(
        address owner,
        address spender,
        uint value,
        uint deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Burn(
        address indexed sender,
        uint amount0,
        uint amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint);

    function price1CumulativeLast() external view returns (uint);

    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);

    function swap(
        uint amount0Out,
        uint amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountToken, uint amountETH);

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function swapTokensForExactETH(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactTokensForETH(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapETHForExactTokens(
        uint amountOut,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function quote(
        uint amountA,
        uint reserveA,
        uint reserveB
    ) external pure returns (uint amountB);

    function getAmountOut(
        uint amountIn,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountOut);

    function getAmountIn(
        uint amountOut,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountIn);

    function getAmountsOut(
        uint amountIn,
        address[] calldata path
    ) external view returns (uint[] memory amounts);

    function getAmountsIn(
        uint amountOut,
        address[] calldata path
    ) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

contract Scorch is Context, IERC20, Ownable {
    using SafeMath for uint256;

    uint256 public totalBurned = 0;
    uint256 public totalBurnRewards = 0;

    uint256 public burnCapDivisor = 10;
    uint256 public burnSub1EthCap = 100000000000000000;

    string private _name = "Scorch";
    string private _symbol = "OTC";
    uint8 private _decimals = 18;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    address payable private devMarketingWallet =
        payable(0xAd844b2EfB384Eb2fbE795F99B3c5dE22c5446fD);
    address public immutable deadAddress =
        0x000000000000000000000000000000000000dEaD;

    uint256 public _buyDevFees = 1;
    uint256 public _buyBurnFees = 3;

    uint256 public _sellDevFees = 1;
    uint256 public _sellBurnFees = 3;

    uint256 public _devShares = 1;
    uint256 public _burnShares = 3;

    uint256 public _totalTaxIfBuying = 4;
    uint256 public _totalTaxIfSelling = 4;
    uint256 public _totalDistributionShares = 4;

    uint256 public percentForLPBurn = 25;
    bool public lpBurnEnabled = true;
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;

    // Fees / MaxWallet / TxLimit exemption mappings

    mapping(address => bool) public checkExcludedFromFees;
    mapping(address => bool) public checkMarketPair;

    // Supply / Max Tx tokenomics

    uint256 private _totalSupply = 10000000 * 10 ** 18;
    uint256 private minimumTokensBeforeSwap = (_totalSupply * 20) / 10000;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    // Swap and liquify flags (for taxes)

    bool private inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    // events & modifiers

    event BurnedTokensForEth(
        address account,
        uint256 burnAmount,
        uint256 ethRecievedAmount
    );

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    event SwapETHForTokens(uint256 amountIn, address[] path);

    event SwapTokensForETH(uint256 amountIn, address[] path);

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

    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
            address(this),
            _uniswapV2Router.WETH()
        );

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        checkExcludedFromFees[owner()] = true;
        checkExcludedFromFees[address(this)] = true;

        _totalTaxIfBuying = _buyDevFees.add(_buyBurnFees);
        _totalTaxIfSelling = _sellDevFees.add(_sellBurnFees);
        _totalDistributionShares = _devShares.add(_burnShares);

        checkMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

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

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

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

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

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

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

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 addMarketPair(address account) public onlyOwner {
        checkMarketPair[account] = true;
    }

    function setcheckExcludedFromFees(
        address account,
        bool newValue
    ) public onlyOwner {
        checkExcludedFromFees[account] = newValue;
    }

    function setBuyFee(
        uint256 newDevTax,
        uint256 newBurnTax
    ) external onlyOwner {
        _buyDevFees = newDevTax;
        _buyBurnFees = newBurnTax;

        _totalTaxIfBuying = _buyDevFees.add(_buyBurnFees);
        require(
            _totalTaxIfBuying <= 5,
            "Total buy fees cannot be more than 5%"
        );
    }

    function setSellFee(
        uint256 newDevTax,
        uint256 newBurnTax
    ) external onlyOwner {
        _sellDevFees = newDevTax;
        _sellBurnFees = newBurnTax;

        _totalTaxIfSelling = _sellDevFees.add(_sellBurnFees);
        require(
            _totalTaxIfSelling <= 5,
            "Total sell fees cannot be more than 5%"
        );
    }

    function setDistributionSettings(
        uint256 newDevShare,
        uint256 newBurnShare
    ) external onlyOwner {
        _devShares = newDevShare;
        _burnShares = newBurnShare;

        _totalDistributionShares = _devShares.add(_burnShares);
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner {
        minimumTokensBeforeSwap =  (newLimit * totalSupply()) / 10000;
    }

    function setDevMarketingWallet(address newAddress) external onlyOwner {
        devMarketingWallet = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressETH(
        address payable recipient,
        uint256 amount
    ) private {
        recipient.transfer(amount);
    }

    //to recieve ETH from uniswapV2Router when swapping
    receive() external payable {}

    // msg.sender burns tokens and recieve uniswap rate TAX FREE, instead of selling.
    function scorch(uint256 amount) public returns (bool) {
        require(balanceOf(_msgSender()) >= amount, "not enough funds to burn");

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uint[] memory a = uniswapV2Router.getAmountsOut(amount, path);

        uint256 cap;
        if (address(this).balance <= 1 ether) {
            cap = burnSub1EthCap;
        } else {
            cap = address(this).balance / burnCapDivisor;
        }

        require(a[a.length - 1] <= cap, "amount greater than cap");
        require(
            address(this).balance >= a[a.length - 1],
            "not enough funds in contract"
        );

        transferToAddressETH(_msgSender(), a[a.length - 1]);
        _burn(_msgSender(), amount);

        totalBurnRewards += a[a.length - 1];
        totalBurned += amount;

        emit BurnedTokensForEth(_msgSender(), amount, a[a.length - 1]);
        return true;
    }

    /// @notice A read function that returns the amount of eth received if you burned X amount of tokens
    /// @param amount The amount of tokens you want to burn
    function getEthOut(uint256 amount) public view returns (uint256) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uint[] memory a = uniswapV2Router.getAmountsOut(amount, path);

        return a[a.length - 1];
    }

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

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if (inSwapAndLiquify) {
            _basicTransfer(sender, recipient, amount);
        } else {
            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >=
                minimumTokensBeforeSwap;

            if (
                overMinimumTokenBalance &&
                !inSwapAndLiquify &&
                !checkMarketPair[sender] &&
                swapAndLiquifyEnabled
            ) {
                if (swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);
            }

            if (
                !inSwapAndLiquify &&
                checkMarketPair[recipient] &&
                lpBurnEnabled &&
                block.timestamp >= lastLpBurnTime + lpBurnFrequency &&
                !checkExcludedFromFees[sender]
            ) {
                autoBurnLiquidityPairTokens();
            }

            _balances[sender] = _balances[sender].sub(
                amount,
                "Insufficient Balance"
            );

            uint256 finalAmount = (checkExcludedFromFees[sender] ||
                checkExcludedFromFees[recipient])
                ? amount
                : takeFee(sender, recipient, amount);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
        }
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        uint256 ethBalanceBeforeSwap = address(this).balance;
        uint256 tokensForSwap = tAmount;

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance.sub(
            ethBalanceBeforeSwap
        );

        uint256 amountETHBurn = amountReceived.mul(_burnShares).div(
            _totalDistributionShares
        );
        uint256 amountETHDev = amountReceived.sub(amountETHBurn);

        if (amountETHDev > 0)
            transferToAddressETH(devMarketingWallet, amountETHDev);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );

        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeAmount = 0;

        if (checkMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        } else if (checkMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }

        if (feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function getStats() public view returns (uint256, uint256, uint256) {
        return (totalBurned, totalBurnRewards, address(this).balance);
    }

    function autoBurnLiquidityPairTokens() internal returns (bool) {
        lastLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = balanceOf(uniswapPair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(
            10000
        );

        // pull tokens from uniswap liquidity and burn them
        if (amountToBurn > 0) {
            _burn(uniswapPair, amountToBurn);
            totalBurned += amountToBurn; 
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapPair);
        pair.sync();
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethRecievedAmount","type":"uint256"}],"name":"BurnedTokensForEth","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_burnShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyBurnFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDevFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBurnFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDevFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMarketPair","outputs":[],"stateMutability":"nonpayable","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":"burnCapDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnSub1EthCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getEthOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStats","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"scorch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDevTax","type":"uint256"},{"internalType":"uint256","name":"newBurnTax","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDevMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDevShare","type":"uint256"},{"internalType":"uint256","name":"newBurnShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDevTax","type":"uint256"},{"internalType":"uint256","name":"newBurnTax","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setcheckExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurnRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006002819055600355600a60045567016345785d8a000060055560e0604052600660a0818152650a6c6dee4c6d60d31b60c0526200003f908262000582565b506040805180820190915260038152624f544360e81b602082015260079062000069908262000582565b506008805460ff199081166012908117909255600b80546001600160a01b03191673ad844b2efb384eb2fbe795f99b3c5de22c5446fd17905561dead6080526001600c8190556003600d819055600e829055600f819055601082905560115560049283905560138390556014928355601960155560168054909216179055610e106017556a084595161401484a000000601b819055612710916200010e919062000664565b6200011a91906200067e565b601c55601e805461ffff60a81b1916600160a81b1790553480156200013e57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fe9190620006a1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002729190620006a1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e69190620006a1565b601e80546001600160a01b039283166001600160a01b031991821617909155601d80549284169290911682179055601b54306000908152600a60209081526040808320948352939052918220556001906019906200034c6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526019909252902080549091166001179055600d54600c546200039d916200046e565b601255600f54600e54620003b1916200046e565b601355601154601054620003c5916200046e565b601455601e546001600160a01b03166000908152601a60205260408120805460ff19166001179055601b5490600990620003fc3390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601b546040516200045f91815260200190565b60405180910390a350620006e2565b6000806200047d8385620006cc565b905083811015620004d45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200050857607f821691505b6020821081036200052957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200057d57600081815260208120601f850160051c81016020861015620005585750805b601f850160051c820191505b81811015620005795782815560010162000564565b5050505b505050565b81516001600160401b038111156200059e576200059e620004dd565b620005b681620005af8454620004f3565b846200052f565b602080601f831160018114620005ee5760008415620005d55750858301515b600019600386901b1c1916600185901b17855562000579565b600085815260208120601f198616915b828110156200061f57888601518255948401946001909101908401620005fe565b50858210156200063e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620004d757620004d76200064e565b6000826200069c57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620006b457600080fd5b81516001600160a01b0381168114620004d457600080fd5b80820180821115620004d757620004d76200064e565b6080516126e2620007056000396000818161040e0152610e2b01526126e26000f3fe6080604052600436106102e85760003560e01c806374e8414e11610190578063c49b9a80116100dc578063e207a92b11610095578063f2fde38b1161006f578063f2fde38b146108bc578063fabf7063146108dc578063fb0ecfa41461090c578063fb34a3361461092c57600080fd5b8063e207a92b14610866578063eea5b63f14610886578063f0cd1dac146108a657600080fd5b8063c49b9a801461077a578063c59d48471461079a578063c816841b146107c9578063d89135cd146107e9578063da00097d146107ff578063dd62ed3e1461082057600080fd5b8063a08e671f11610149578063a4c82a0011610123578063a4c82a0014610704578063a5d69d1f1461071a578063a9059cbb1461073a578063b2ff24101461075a57600080fd5b8063a08e671f146106b8578063a40dcda3146106ce578063a457c2d7146106e457600080fd5b806374e8414e146106245780637b3a3ec61461064457806382eefb431461065a5780638da5cb5b14610670578063914eb66a1461068e57806395d89b41146106a357600080fd5b8063313ce5671161024f5780634a728e241161020857806355324fa9116101e257806355324fa9146105885780635e252455146105b85780636ac9a870146105ce57806370a08231146105ee57600080fd5b80634a728e241461053b5780634a74bb02146105515780634f1c2aa41461057257600080fd5b8063313ce5671461049757806331eca57e146104b957806339509351146104cf5780633b97084a146104ef5780633d98b9af1461050f5780633f2516881461052557600080fd5b806323b872dd116102a157806323b872dd146103dc57806327c8f835146103fc5780632b112e49146104305780632c3e486c146104455780632cdae5cb1461045b5780632e82f1a01461047d57600080fd5b806306fdde03146102f4578063095ea7b31461031f5780631694505e1461034f57806318160ddd14610387578063199ffc72146103a65780631e372529146103bc57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b50610309610942565b60405161031691906121ea565b60405180910390f35b34801561032b57600080fd5b5061033f61033a366004612250565b6109d4565b6040519015158152602001610316565b34801561035b57600080fd5b50601d5461036f906001600160a01b031681565b6040516001600160a01b039091168152602001610316565b34801561039357600080fd5b50601b545b604051908152602001610316565b3480156103b257600080fd5b5061039860155481565b3480156103c857600080fd5b5061033f6103d736600461227c565b6109eb565b3480156103e857600080fd5b5061033f6103f7366004612295565b610dc0565b34801561040857600080fd5b5061036f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561043c57600080fd5b50610398610e29565b34801561045157600080fd5b5061039860175481565b34801561046757600080fd5b5061047b6104763660046122eb565b610e73565b005b34801561048957600080fd5b5060165461033f9060ff1681565b3480156104a357600080fd5b5060085460405160ff9091168152602001610316565b3480156104c557600080fd5b5061039860055481565b3480156104db57600080fd5b5061033f6104ea366004612250565b610ec8565b3480156104fb57600080fd5b5061047b61050a36600461227c565b610efe565b34801561051b57600080fd5b50610398600f5481565b34801561053157600080fd5b5061039860105481565b34801561054757600080fd5b50610398600c5481565b34801561055d57600080fd5b50601e5461033f90600160a81b900460ff1681565b34801561057e57600080fd5b5061039860115481565b34801561059457600080fd5b5061033f6105a3366004612320565b601a6020526000908152604090205460ff1681565b3480156105c457600080fd5b50610398600d5481565b3480156105da57600080fd5b5061047b6105e936600461233d565b610f4e565b3480156105fa57600080fd5b50610398610609366004612320565b6001600160a01b031660009081526009602052604090205490565b34801561063057600080fd5b5061047b61063f366004612320565b610ff4565b34801561065057600080fd5b5061039860045481565b34801561066657600080fd5b5061039860135481565b34801561067c57600080fd5b506000546001600160a01b031661036f565b34801561069a57600080fd5b5061047b611040565b3480156106af57600080fd5b506103096110b4565b3480156106c457600080fd5b5061039860145481565b3480156106da57600080fd5b50610398600e5481565b3480156106f057600080fd5b5061033f6106ff366004612250565b6110c3565b34801561071057600080fd5b5061039860185481565b34801561072657600080fd5b5061047b61073536600461235f565b611112565b34801561074657600080fd5b5061033f610755366004612250565b61115a565b34801561076657600080fd5b5061039861077536600461227c565b611167565b34801561078657600080fd5b5061047b61079536600461235f565b6112eb565b3480156107a657600080fd5b506002546003544760408051938452602084019290925290820152606001610316565b3480156107d557600080fd5b50601e5461036f906001600160a01b031681565b3480156107f557600080fd5b5061039860025481565b34801561080b57600080fd5b50601e5461033f90600160b01b900460ff1681565b34801561082c57600080fd5b5061039861083b36600461237a565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b34801561087257600080fd5b5061047b610881366004612320565b61136d565b34801561089257600080fd5b5061047b6108a136600461233d565b6113bb565b3480156108b257600080fd5b5061039860125481565b3480156108c857600080fd5b5061047b6108d7366004612320565b611400565b3480156108e857600080fd5b5061033f6108f7366004612320565b60196020526000908152604090205460ff1681565b34801561091857600080fd5b5061047b61092736600461233d565b6114ea565b34801561093857600080fd5b5061039860035481565b606060068054610951906123b3565b80601f016020809104026020016040519081016040528092919081815260200182805461097d906123b3565b80156109ca5780601f1061099f576101008083540402835291602001916109ca565b820191906000526020600020905b8154815290600101906020018083116109ad57829003601f168201915b5050505050905090565b60006109e133848461158b565b5060015b92915050565b6000816109f733610609565b1015610a4a5760405162461bcd60e51b815260206004820152601860248201527f6e6f7420656e6f7567682066756e647320746f206275726e000000000000000060448201526064015b60405180910390fd5b6040805160028082526060820183526000926020830190803683370190505090503081600081518110610a7f57610a7f612403565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afc9190612419565b81600181518110610b0f57610b0f612403565b6001600160a01b039283166020918202929092010152601d5460405163d06ca61f60e01b8152600092919091169063d06ca61f90610b53908790869060040161247a565b600060405180830381865afa158015610b70573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b98919081019061249b565b90506000670de0b6b3a76400004711610bb45750600554610bc4565b600454610bc1904761256f565b90505b808260018451610bd49190612591565b81518110610be457610be4612403565b60200260200101511115610c3a5760405162461bcd60e51b815260206004820152601760248201527f616d6f756e742067726561746572207468616e206361700000000000000000006044820152606401610a41565b8160018351610c499190612591565b81518110610c5957610c59612403565b6020026020010151471015610cb05760405162461bcd60e51b815260206004820152601c60248201527f6e6f7420656e6f7567682066756e647320696e20636f6e7472616374000000006044820152606401610a41565b610ce0338360018551610cc39190612591565b81518110610cd357610cd3612403565b60200260200101516116b0565b610cea33866116eb565b8160018351610cf99190612591565b81518110610d0957610d09612403565b602002602001015160036000828254610d2291906125a4565b925050819055508460026000828254610d3b91906125a4565b909155507f6ca5c7c2d43ebd8c6d3049382038bb2df58288440912f41fcd488a779ed94381905033868460018651610d739190612591565b81518110610d8357610d83612403565b602090810291909101810151604080516001600160a01b0390951685529184019290925282015260600160405180910390a1506001949350505050565b6000610dcd84848461181f565b610e1f8433610e1a85604051806060016040528060288152602001612640602891396001600160a01b038a166000908152600a602090815260408083203384529091529020549190611b52565b61158b565b5060019392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260096020526040812054601b54610e6e91611b8c565b905090565b6000546001600160a01b03163314610e9d5760405162461bcd60e51b8152600401610a41906125b7565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b336000818152600a602090815260408083206001600160a01b038716845290915281205490916109e1918590610e1a9086611bd5565b6000546001600160a01b03163314610f285760405162461bcd60e51b8152600401610a41906125b7565b612710610f34601b5490565b610f3e90836125ec565b610f48919061256f565b601c5550565b6000546001600160a01b03163314610f785760405162461bcd60e51b8152600401610a41906125b7565b600e829055600f819055610f8c8282611bd5565b601381905560051015610ff05760405162461bcd60e51b815260206004820152602660248201527f546f74616c2073656c6c20666565732063616e6e6f74206265206d6f7265207460448201526568616e20352560d01b6064820152608401610a41565b5050565b6000546001600160a01b0316331461101e5760405162461bcd60e51b8152600401610a41906125b7565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461106a5760405162461bcd60e51b8152600401610a41906125b7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060078054610951906123b3565b60006109e13384610e1a8560405180606001604052806025815260200161268860259139336000908152600a602090815260408083206001600160a01b038d1684529091529020549190611b52565b6000546001600160a01b0316331461113c5760405162461bcd60e51b8152600401610a41906125b7565b601e8054911515600160b01b0260ff60b01b19909216919091179055565b60006109e133848461181f565b6040805160028082526060820183526000928392919060208301908036833701905050905030816000815181106111a0576111a0612403565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121d9190612419565b8160018151811061123057611230612403565b6001600160a01b039283166020918202929092010152601d5460405163d06ca61f60e01b8152600092919091169063d06ca61f90611274908790869060040161247a565b600060405180830381865afa158015611291573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112b9919081019061249b565b905080600182516112ca9190612591565b815181106112da576112da612403565b602002602001015192505050919050565b6000546001600160a01b031633146113155760405162461bcd60e51b8152600401610a41906125b7565b601e8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061136290831515815260200190565b60405180910390a150565b6000546001600160a01b031633146113975760405162461bcd60e51b8152600401610a41906125b7565b6001600160a01b03166000908152601a60205260409020805460ff19166001179055565b6000546001600160a01b031633146113e55760405162461bcd60e51b8152600401610a41906125b7565b601082905560118190556113f98282611bd5565b6014555050565b6000546001600160a01b0316331461142a5760405162461bcd60e51b8152600401610a41906125b7565b6001600160a01b03811661148f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a41565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115145760405162461bcd60e51b8152600401610a41906125b7565b600c829055600d8190556115288282611bd5565b601281905560051015610ff05760405162461bcd60e51b815260206004820152602560248201527f546f74616c2062757920666565732063616e6e6f74206265206d6f7265207468604482015264616e20352560d81b6064820152608401610a41565b6001600160a01b0383166115ed5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a41565b6001600160a01b03821661164e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a41565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156116e6573d6000803e3d6000fd5b505050565b6001600160a01b03821661174b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a41565b6001600160a01b038216600090815260096020526040902054818110156117bf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a41565b6001600160a01b03831660009081526009602052604081208383039055601b80548492906117ee908490612591565b90915550506040518281526000906001600160a01b03851690600080516020612668833981519152906020016116a3565b6001600160a01b0383166118835760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a41565b6001600160a01b0382166118e55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a41565b601e54600160a01b900460ff161561190857611902838383611c34565b50505050565b30600090815260096020526040902054601c54811080159081906119365750601e54600160a01b900460ff16155b801561195b57506001600160a01b0385166000908152601a602052604090205460ff16155b80156119705750601e54600160a81b900460ff165b1561199657601e54600160b01b900460ff161561198d57601c5491505b61199682611d08565b601e54600160a01b900460ff161580156119c857506001600160a01b0384166000908152601a602052604090205460ff165b80156119d6575060165460ff165b80156119f157506017546018546119ed91906125a4565b4210155b8015611a1657506001600160a01b03851660009081526019602052604090205460ff16155b15611a2557611a23611d98565b505b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038816600090815260099091529190912054611a77918590611b52565b6001600160a01b038616600090815260096020908152604080832093909355601990529081205460ff1680611ac457506001600160a01b03851660009081526019602052604090205460ff165b611ad857611ad3868686611e76565b611ada565b835b6001600160a01b038616600090815260096020526040902054909150611b009082611bd5565b6001600160a01b03808716600081815260096020526040908190209390935591519088169060008051602061266883398151915290611b429085815260200190565b60405180910390a3505050505050565b60008184841115611b765760405162461bcd60e51b8152600401610a4191906121ea565b506000611b838486612591565b95945050505050565b6000611bce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b52565b9392505050565b600080611be283856125a4565b905083811015611bce5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a41565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600990915291822054611c85918490611b52565b6001600160a01b038086166000908152600960205260408082209390935590851681522054611cb49083611bd5565b6001600160a01b03808516600081815260096020526040908190209390935591519086169060008051602061266883398151915290611cf69086815260200190565b60405180910390a35060019392505050565b601e805460ff60a01b1916600160a01b1790554781611d2681611f6a565b6000611d324784611b8c565b90506000611d57601454611d51601154856120fd90919063ffffffff16565b9061217f565b90506000611d658383611b8c565b90508015611d8357600b54611d83906001600160a01b0316826116b0565b5050601e805460ff60a01b1916905550505050565b42601855601e546001600160a01b03166000908152600960205260408120546000611dd4612710611d51601554856120fd90919063ffffffff16565b90508015611e0a57601e54611df2906001600160a01b0316826116eb565b8060026000828254611e0491906125a4565b90915550505b601e546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b158015611e5457600080fd5b505af1158015611e68573d6000803e3d6000fd5b505050506001935050505090565b6001600160a01b0383166000908152601a6020526040812054819060ff1615611eba57611eb36064611d51601254866120fd90919063ffffffff16565b9050611ef8565b6001600160a01b0384166000908152601a602052604090205460ff1615611ef857611ef56064611d51601354866120fd90919063ffffffff16565b90505b8015611f605730600090815260096020526040902054611f189082611bd5565b30600081815260096020526040908190209290925590516001600160a01b0387169060008051602061266883398151915290611f579085815260200190565b60405180910390a35b611b838382611b8c565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f9f57611f9f612403565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ff8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201c9190612419565b8160018151811061202f5761202f612403565b6001600160a01b039283166020918202929092010152601d54612055913091168461158b565b601d5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061208e908590600090869030904290600401612603565b600060405180830381600087803b1580156120a857600080fd5b505af11580156120bc573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516120f192919061247a565b60405180910390a15050565b60008260000361210f575060006109e5565b600061211b83856125ec565b905082612128858361256f565b14611bce5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a41565b6000611bce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836121dd5760405162461bcd60e51b8152600401610a4191906121ea565b506000611b83848661256f565b600060208083528351808285015260005b81811015612217578581018301518582016040015282016121fb565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461224d57600080fd5b50565b6000806040838503121561226357600080fd5b823561226e81612238565b946020939093013593505050565b60006020828403121561228e57600080fd5b5035919050565b6000806000606084860312156122aa57600080fd5b83356122b581612238565b925060208401356122c581612238565b929592945050506040919091013590565b803580151581146122e657600080fd5b919050565b600080604083850312156122fe57600080fd5b823561230981612238565b9150612317602084016122d6565b90509250929050565b60006020828403121561233257600080fd5b8135611bce81612238565b6000806040838503121561235057600080fd5b50508035926020909101359150565b60006020828403121561237157600080fd5b611bce826122d6565b6000806040838503121561238d57600080fd5b823561239881612238565b915060208301356123a881612238565b809150509250929050565b600181811c908216806123c757607f821691505b6020821081036123e757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561242b57600080fd5b8151611bce81612238565b600081518084526020808501945080840160005b8381101561246f5781516001600160a01b03168752958201959082019060010161244a565b509495945050505050565b8281526040602082015260006124936040830184612436565b949350505050565b600060208083850312156124ae57600080fd5b825167ffffffffffffffff808211156124c657600080fd5b818501915085601f8301126124da57600080fd5b8151818111156124ec576124ec6123ed565b8060051b604051601f19603f83011681018181108582111715612511576125116123ed565b60405291825284820192508381018501918883111561252f57600080fd5b938501935b8285101561254d57845184529385019392850192612534565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b60008261258c57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156109e5576109e5612559565b808201808211156109e5576109e5612559565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b80820281158282048414176109e5576109e5612559565b85815284602082015260a06040820152600061262260a0830186612436565b6001600160a01b039490941660608301525060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220651f92c7fa533168e9bc386304a9500b3d05e139f4025e7b112c9a73439c9b4e64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c806374e8414e11610190578063c49b9a80116100dc578063e207a92b11610095578063f2fde38b1161006f578063f2fde38b146108bc578063fabf7063146108dc578063fb0ecfa41461090c578063fb34a3361461092c57600080fd5b8063e207a92b14610866578063eea5b63f14610886578063f0cd1dac146108a657600080fd5b8063c49b9a801461077a578063c59d48471461079a578063c816841b146107c9578063d89135cd146107e9578063da00097d146107ff578063dd62ed3e1461082057600080fd5b8063a08e671f11610149578063a4c82a0011610123578063a4c82a0014610704578063a5d69d1f1461071a578063a9059cbb1461073a578063b2ff24101461075a57600080fd5b8063a08e671f146106b8578063a40dcda3146106ce578063a457c2d7146106e457600080fd5b806374e8414e146106245780637b3a3ec61461064457806382eefb431461065a5780638da5cb5b14610670578063914eb66a1461068e57806395d89b41146106a357600080fd5b8063313ce5671161024f5780634a728e241161020857806355324fa9116101e257806355324fa9146105885780635e252455146105b85780636ac9a870146105ce57806370a08231146105ee57600080fd5b80634a728e241461053b5780634a74bb02146105515780634f1c2aa41461057257600080fd5b8063313ce5671461049757806331eca57e146104b957806339509351146104cf5780633b97084a146104ef5780633d98b9af1461050f5780633f2516881461052557600080fd5b806323b872dd116102a157806323b872dd146103dc57806327c8f835146103fc5780632b112e49146104305780632c3e486c146104455780632cdae5cb1461045b5780632e82f1a01461047d57600080fd5b806306fdde03146102f4578063095ea7b31461031f5780631694505e1461034f57806318160ddd14610387578063199ffc72146103a65780631e372529146103bc57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b50610309610942565b60405161031691906121ea565b60405180910390f35b34801561032b57600080fd5b5061033f61033a366004612250565b6109d4565b6040519015158152602001610316565b34801561035b57600080fd5b50601d5461036f906001600160a01b031681565b6040516001600160a01b039091168152602001610316565b34801561039357600080fd5b50601b545b604051908152602001610316565b3480156103b257600080fd5b5061039860155481565b3480156103c857600080fd5b5061033f6103d736600461227c565b6109eb565b3480156103e857600080fd5b5061033f6103f7366004612295565b610dc0565b34801561040857600080fd5b5061036f7f000000000000000000000000000000000000000000000000000000000000dead81565b34801561043c57600080fd5b50610398610e29565b34801561045157600080fd5b5061039860175481565b34801561046757600080fd5b5061047b6104763660046122eb565b610e73565b005b34801561048957600080fd5b5060165461033f9060ff1681565b3480156104a357600080fd5b5060085460405160ff9091168152602001610316565b3480156104c557600080fd5b5061039860055481565b3480156104db57600080fd5b5061033f6104ea366004612250565b610ec8565b3480156104fb57600080fd5b5061047b61050a36600461227c565b610efe565b34801561051b57600080fd5b50610398600f5481565b34801561053157600080fd5b5061039860105481565b34801561054757600080fd5b50610398600c5481565b34801561055d57600080fd5b50601e5461033f90600160a81b900460ff1681565b34801561057e57600080fd5b5061039860115481565b34801561059457600080fd5b5061033f6105a3366004612320565b601a6020526000908152604090205460ff1681565b3480156105c457600080fd5b50610398600d5481565b3480156105da57600080fd5b5061047b6105e936600461233d565b610f4e565b3480156105fa57600080fd5b50610398610609366004612320565b6001600160a01b031660009081526009602052604090205490565b34801561063057600080fd5b5061047b61063f366004612320565b610ff4565b34801561065057600080fd5b5061039860045481565b34801561066657600080fd5b5061039860135481565b34801561067c57600080fd5b506000546001600160a01b031661036f565b34801561069a57600080fd5b5061047b611040565b3480156106af57600080fd5b506103096110b4565b3480156106c457600080fd5b5061039860145481565b3480156106da57600080fd5b50610398600e5481565b3480156106f057600080fd5b5061033f6106ff366004612250565b6110c3565b34801561071057600080fd5b5061039860185481565b34801561072657600080fd5b5061047b61073536600461235f565b611112565b34801561074657600080fd5b5061033f610755366004612250565b61115a565b34801561076657600080fd5b5061039861077536600461227c565b611167565b34801561078657600080fd5b5061047b61079536600461235f565b6112eb565b3480156107a657600080fd5b506002546003544760408051938452602084019290925290820152606001610316565b3480156107d557600080fd5b50601e5461036f906001600160a01b031681565b3480156107f557600080fd5b5061039860025481565b34801561080b57600080fd5b50601e5461033f90600160b01b900460ff1681565b34801561082c57600080fd5b5061039861083b36600461237a565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b34801561087257600080fd5b5061047b610881366004612320565b61136d565b34801561089257600080fd5b5061047b6108a136600461233d565b6113bb565b3480156108b257600080fd5b5061039860125481565b3480156108c857600080fd5b5061047b6108d7366004612320565b611400565b3480156108e857600080fd5b5061033f6108f7366004612320565b60196020526000908152604090205460ff1681565b34801561091857600080fd5b5061047b61092736600461233d565b6114ea565b34801561093857600080fd5b5061039860035481565b606060068054610951906123b3565b80601f016020809104026020016040519081016040528092919081815260200182805461097d906123b3565b80156109ca5780601f1061099f576101008083540402835291602001916109ca565b820191906000526020600020905b8154815290600101906020018083116109ad57829003601f168201915b5050505050905090565b60006109e133848461158b565b5060015b92915050565b6000816109f733610609565b1015610a4a5760405162461bcd60e51b815260206004820152601860248201527f6e6f7420656e6f7567682066756e647320746f206275726e000000000000000060448201526064015b60405180910390fd5b6040805160028082526060820183526000926020830190803683370190505090503081600081518110610a7f57610a7f612403565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afc9190612419565b81600181518110610b0f57610b0f612403565b6001600160a01b039283166020918202929092010152601d5460405163d06ca61f60e01b8152600092919091169063d06ca61f90610b53908790869060040161247a565b600060405180830381865afa158015610b70573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b98919081019061249b565b90506000670de0b6b3a76400004711610bb45750600554610bc4565b600454610bc1904761256f565b90505b808260018451610bd49190612591565b81518110610be457610be4612403565b60200260200101511115610c3a5760405162461bcd60e51b815260206004820152601760248201527f616d6f756e742067726561746572207468616e206361700000000000000000006044820152606401610a41565b8160018351610c499190612591565b81518110610c5957610c59612403565b6020026020010151471015610cb05760405162461bcd60e51b815260206004820152601c60248201527f6e6f7420656e6f7567682066756e647320696e20636f6e7472616374000000006044820152606401610a41565b610ce0338360018551610cc39190612591565b81518110610cd357610cd3612403565b60200260200101516116b0565b610cea33866116eb565b8160018351610cf99190612591565b81518110610d0957610d09612403565b602002602001015160036000828254610d2291906125a4565b925050819055508460026000828254610d3b91906125a4565b909155507f6ca5c7c2d43ebd8c6d3049382038bb2df58288440912f41fcd488a779ed94381905033868460018651610d739190612591565b81518110610d8357610d83612403565b602090810291909101810151604080516001600160a01b0390951685529184019290925282015260600160405180910390a1506001949350505050565b6000610dcd84848461181f565b610e1f8433610e1a85604051806060016040528060288152602001612640602891396001600160a01b038a166000908152600a602090815260408083203384529091529020549190611b52565b61158b565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316600090815260096020526040812054601b54610e6e91611b8c565b905090565b6000546001600160a01b03163314610e9d5760405162461bcd60e51b8152600401610a41906125b7565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b336000818152600a602090815260408083206001600160a01b038716845290915281205490916109e1918590610e1a9086611bd5565b6000546001600160a01b03163314610f285760405162461bcd60e51b8152600401610a41906125b7565b612710610f34601b5490565b610f3e90836125ec565b610f48919061256f565b601c5550565b6000546001600160a01b03163314610f785760405162461bcd60e51b8152600401610a41906125b7565b600e829055600f819055610f8c8282611bd5565b601381905560051015610ff05760405162461bcd60e51b815260206004820152602660248201527f546f74616c2073656c6c20666565732063616e6e6f74206265206d6f7265207460448201526568616e20352560d01b6064820152608401610a41565b5050565b6000546001600160a01b0316331461101e5760405162461bcd60e51b8152600401610a41906125b7565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461106a5760405162461bcd60e51b8152600401610a41906125b7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060078054610951906123b3565b60006109e13384610e1a8560405180606001604052806025815260200161268860259139336000908152600a602090815260408083206001600160a01b038d1684529091529020549190611b52565b6000546001600160a01b0316331461113c5760405162461bcd60e51b8152600401610a41906125b7565b601e8054911515600160b01b0260ff60b01b19909216919091179055565b60006109e133848461181f565b6040805160028082526060820183526000928392919060208301908036833701905050905030816000815181106111a0576111a0612403565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121d9190612419565b8160018151811061123057611230612403565b6001600160a01b039283166020918202929092010152601d5460405163d06ca61f60e01b8152600092919091169063d06ca61f90611274908790869060040161247a565b600060405180830381865afa158015611291573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112b9919081019061249b565b905080600182516112ca9190612591565b815181106112da576112da612403565b602002602001015192505050919050565b6000546001600160a01b031633146113155760405162461bcd60e51b8152600401610a41906125b7565b601e8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061136290831515815260200190565b60405180910390a150565b6000546001600160a01b031633146113975760405162461bcd60e51b8152600401610a41906125b7565b6001600160a01b03166000908152601a60205260409020805460ff19166001179055565b6000546001600160a01b031633146113e55760405162461bcd60e51b8152600401610a41906125b7565b601082905560118190556113f98282611bd5565b6014555050565b6000546001600160a01b0316331461142a5760405162461bcd60e51b8152600401610a41906125b7565b6001600160a01b03811661148f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a41565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115145760405162461bcd60e51b8152600401610a41906125b7565b600c829055600d8190556115288282611bd5565b601281905560051015610ff05760405162461bcd60e51b815260206004820152602560248201527f546f74616c2062757920666565732063616e6e6f74206265206d6f7265207468604482015264616e20352560d81b6064820152608401610a41565b6001600160a01b0383166115ed5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a41565b6001600160a01b03821661164e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a41565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156116e6573d6000803e3d6000fd5b505050565b6001600160a01b03821661174b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a41565b6001600160a01b038216600090815260096020526040902054818110156117bf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a41565b6001600160a01b03831660009081526009602052604081208383039055601b80548492906117ee908490612591565b90915550506040518281526000906001600160a01b03851690600080516020612668833981519152906020016116a3565b6001600160a01b0383166118835760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a41565b6001600160a01b0382166118e55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a41565b601e54600160a01b900460ff161561190857611902838383611c34565b50505050565b30600090815260096020526040902054601c54811080159081906119365750601e54600160a01b900460ff16155b801561195b57506001600160a01b0385166000908152601a602052604090205460ff16155b80156119705750601e54600160a81b900460ff165b1561199657601e54600160b01b900460ff161561198d57601c5491505b61199682611d08565b601e54600160a01b900460ff161580156119c857506001600160a01b0384166000908152601a602052604090205460ff165b80156119d6575060165460ff165b80156119f157506017546018546119ed91906125a4565b4210155b8015611a1657506001600160a01b03851660009081526019602052604090205460ff16155b15611a2557611a23611d98565b505b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038816600090815260099091529190912054611a77918590611b52565b6001600160a01b038616600090815260096020908152604080832093909355601990529081205460ff1680611ac457506001600160a01b03851660009081526019602052604090205460ff165b611ad857611ad3868686611e76565b611ada565b835b6001600160a01b038616600090815260096020526040902054909150611b009082611bd5565b6001600160a01b03808716600081815260096020526040908190209390935591519088169060008051602061266883398151915290611b429085815260200190565b60405180910390a3505050505050565b60008184841115611b765760405162461bcd60e51b8152600401610a4191906121ea565b506000611b838486612591565b95945050505050565b6000611bce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b52565b9392505050565b600080611be283856125a4565b905083811015611bce5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a41565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600990915291822054611c85918490611b52565b6001600160a01b038086166000908152600960205260408082209390935590851681522054611cb49083611bd5565b6001600160a01b03808516600081815260096020526040908190209390935591519086169060008051602061266883398151915290611cf69086815260200190565b60405180910390a35060019392505050565b601e805460ff60a01b1916600160a01b1790554781611d2681611f6a565b6000611d324784611b8c565b90506000611d57601454611d51601154856120fd90919063ffffffff16565b9061217f565b90506000611d658383611b8c565b90508015611d8357600b54611d83906001600160a01b0316826116b0565b5050601e805460ff60a01b1916905550505050565b42601855601e546001600160a01b03166000908152600960205260408120546000611dd4612710611d51601554856120fd90919063ffffffff16565b90508015611e0a57601e54611df2906001600160a01b0316826116eb565b8060026000828254611e0491906125a4565b90915550505b601e546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b158015611e5457600080fd5b505af1158015611e68573d6000803e3d6000fd5b505050506001935050505090565b6001600160a01b0383166000908152601a6020526040812054819060ff1615611eba57611eb36064611d51601254866120fd90919063ffffffff16565b9050611ef8565b6001600160a01b0384166000908152601a602052604090205460ff1615611ef857611ef56064611d51601354866120fd90919063ffffffff16565b90505b8015611f605730600090815260096020526040902054611f189082611bd5565b30600081815260096020526040908190209290925590516001600160a01b0387169060008051602061266883398151915290611f579085815260200190565b60405180910390a35b611b838382611b8c565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f9f57611f9f612403565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ff8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201c9190612419565b8160018151811061202f5761202f612403565b6001600160a01b039283166020918202929092010152601d54612055913091168461158b565b601d5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061208e908590600090869030904290600401612603565b600060405180830381600087803b1580156120a857600080fd5b505af11580156120bc573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516120f192919061247a565b60405180910390a15050565b60008260000361210f575060006109e5565b600061211b83856125ec565b905082612128858361256f565b14611bce5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a41565b6000611bce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836121dd5760405162461bcd60e51b8152600401610a4191906121ea565b506000611b83848661256f565b600060208083528351808285015260005b81811015612217578581018301518582016040015282016121fb565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461224d57600080fd5b50565b6000806040838503121561226357600080fd5b823561226e81612238565b946020939093013593505050565b60006020828403121561228e57600080fd5b5035919050565b6000806000606084860312156122aa57600080fd5b83356122b581612238565b925060208401356122c581612238565b929592945050506040919091013590565b803580151581146122e657600080fd5b919050565b600080604083850312156122fe57600080fd5b823561230981612238565b9150612317602084016122d6565b90509250929050565b60006020828403121561233257600080fd5b8135611bce81612238565b6000806040838503121561235057600080fd5b50508035926020909101359150565b60006020828403121561237157600080fd5b611bce826122d6565b6000806040838503121561238d57600080fd5b823561239881612238565b915060208301356123a881612238565b809150509250929050565b600181811c908216806123c757607f821691505b6020821081036123e757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561242b57600080fd5b8151611bce81612238565b600081518084526020808501945080840160005b8381101561246f5781516001600160a01b03168752958201959082019060010161244a565b509495945050505050565b8281526040602082015260006124936040830184612436565b949350505050565b600060208083850312156124ae57600080fd5b825167ffffffffffffffff808211156124c657600080fd5b818501915085601f8301126124da57600080fd5b8151818111156124ec576124ec6123ed565b8060051b604051601f19603f83011681018181108582111715612511576125116123ed565b60405291825284820192508381018501918883111561252f57600080fd5b938501935b8285101561254d57845184529385019392850192612534565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b60008261258c57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156109e5576109e5612559565b808201808211156109e5576109e5612559565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b80820281158282048414176109e5576109e5612559565b85815284602082015260a06040820152600061262260a0830186612436565b6001600160a01b039490941660608301525060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220651f92c7fa533168e9bc386304a9500b3d05e139f4025e7b112c9a73439c9b4e64736f6c63430008130033

Deployed Bytecode Sourcemap

15696:15953:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19547:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20937:186;;;;;;;;;;-1:-1:-1;20937:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;20937:186:0;1023:187:1;17290:41:0;;;;;;;;;;-1:-1:-1;17290:41:0;;;;-1:-1:-1;;;;;17290:41:0;;;;;;-1:-1:-1;;;;;1406:32:1;;;1388:51;;1376:2;1361:18;17290:41:0;1215:230:1;19824:100:0;;;;;;;;;;-1:-1:-1;19904:12:0;;19824:100;;;1596:25:1;;;1584:2;1569:18;19824:100:0;1450:177:1;16774:36:0;;;;;;;;;;;;;;;;23915:1022;;;;;;;;;;-1:-1:-1;23915:1022:0;;;;;:::i;:::-;;:::i;25630:446::-;;;;;;;;;;-1:-1:-1;25630:446:0;;;;;:::i;:::-;;:::i;16305:90::-;;;;;;;;;;;;;;;23439:128;;;;;;;;;;;;;:::i;16856:45::-;;;;;;;;;;;;;;;;21634:168;;;;;;;;;;-1:-1:-1;21634:168:0;;;;;:::i;:::-;;:::i;:::-;;16817:32;;;;;;;;;;-1:-1:-1;16817:32:0;;;;;;;;19733:83;;;;;;;;;;-1:-1:-1;19799:9:0;;19733:83;;19799:9;;;;3113:36:1;;3101:2;3086:18;19733:83:0;2971:184:1;15904:50:0;;;;;;;;;;;;;;;;20235:293;;;;;;;;;;-1:-1:-1;20235:293:0;;;;;:::i;:::-;;:::i;22833:149::-;;;;;;;;;;-1:-1:-1;22833:149:0;;;;;:::i;:::-;;:::i;16519:32::-;;;;;;;;;;;;;;;;16560:29;;;;;;;;;;;;;;;;16404:30;;;;;;;;;;;;;;;;17454:40;;;;;;;;;;-1:-1:-1;17454:40:0;;;;-1:-1:-1;;;17454:40:0;;;;;;16596:30;;;;;;;;;;;;;;;;17062:47;;;;;;;;;;-1:-1:-1;17062:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16441:31;;;;;;;;;;;;;;;;22180:370;;;;;;;;;;-1:-1:-1;22180:370:0;;;;;:::i;:::-;;:::i;19932:119::-;;;;;;;;;;-1:-1:-1;19932:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;20025:18:0;19998:7;20025:18;;;:9;:18;;;;;;;19932:119;22990:129;;;;;;;;;;-1:-1:-1;22990:129:0;;;;;:::i;:::-;;:::i;15863:34::-;;;;;;;;;;;;;;;;16678:37;;;;;;;;;;;;;;;;6434:79;;;;;;;;;;-1:-1:-1;6472:7:0;6499:6;-1:-1:-1;;;;;6499:6:0;6434:79;;6648:145;;;;;;;;;;;;;:::i;19638:87::-;;;;;;;;;;;;;:::i;16722:43::-;;;;;;;;;;;;;;;;16481:31;;;;;;;;;;;;;;;;20536:393;;;;;;;;;;-1:-1:-1;20536:393:0;;;;;:::i;:::-;;:::i;16908:29::-;;;;;;;;;;;;;;;;23306:125;;;;;;;;;;-1:-1:-1;23306:125:0;;;;;:::i;:::-;;:::i;25430:192::-;;;;;;;;;;-1:-1:-1;25430:192:0;;;;;:::i;:::-;;:::i;25112:310::-;;;;;;;;;;-1:-1:-1;25112:310:0;;;;;:::i;:::-;;:::i;23127:171::-;;;;;;;;;;-1:-1:-1;23127:171:0;;;;;:::i;:::-;;:::i;30752:148::-;;;;;;;;;;-1:-1:-1;30839:11:0;;30852:16;;30870:21;30752:148;;;4052:25:1;;;4108:2;4093:18;;4086:34;;;;4136:18;;;4129:34;4040:2;4025:18;30752:148:0;3850:319:1;17338:26:0;;;;;;;;;;-1:-1:-1;17338:26:0;;;;-1:-1:-1;;;;;17338:26:0;;;15782:30;;;;;;;;;;;;;;;;17501:45;;;;;;;;;;-1:-1:-1;17501:45:0;;;;-1:-1:-1;;;17501:45:0;;;;;;20059:168;;;;;;;;;;-1:-1:-1;20059:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;20192:18:0;;;20165:7;20192:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;20059:168;21519:107;;;;;;;;;;-1:-1:-1;21519:107:0;;;;;:::i;:::-;;:::i;22558:267::-;;;;;;;;;;-1:-1:-1;22558:267:0;;;;;:::i;:::-;;:::i;16635:36::-;;;;;;;;;;;;;;;;6801:281;;;;;;;;;;-1:-1:-1;6801:281:0;;;;;:::i;:::-;;:::i;17002:53::-;;;;;;;;;;-1:-1:-1;17002:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21810:362;;;;;;;;;;-1:-1:-1;21810:362:0;;;;;:::i;:::-;;:::i;15819:35::-;;;;;;;;;;;;;;;;19547:83;19584:13;19617:5;19610:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19547:83;:::o;20937:186::-;21037:4;21054:39;198:10;21077:7;21086:6;21054:8;:39::i;:::-;-1:-1:-1;21111:4:0;20937:186;;;;;:::o;23915:1022::-;23963:4;24015:6;23988:23;198:10;23998:12;102:115;23988:23;:33;;23980:70;;;;-1:-1:-1;;;23980:70:0;;5154:2:1;23980:70:0;;;5136:21:1;5193:2;5173:18;;;5166:30;5232:26;5212:18;;;5205:54;5276:18;;23980:70:0;;;;;;;;;24087:16;;;24101:1;24087:16;;;;;;;;24063:21;;24087:16;;;;;;;;;;-1:-1:-1;24087:16:0;24063:40;;24132:4;24114;24119:1;24114:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24114:23:0;;;:7;;;;;;;;;;:23;;;;24158:15;;:22;;;-1:-1:-1;;;24158:22:0;;;;:15;;;;;:20;;:22;;;;;24114:7;;24158:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24148:4;24153:1;24148:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24148:32:0;;;:7;;;;;;;;;:32;24211:15;;:43;;-1:-1:-1;;;24211:43:0;;24193:15;;24211;;;;;:29;;:43;;24241:6;;24249:4;;24211:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24211:43:0;;;;;;;;;;;;:::i;:::-;24193:61;;24267:11;24318:7;24293:21;:32;24289:162;;-1:-1:-1;24348:14:0;;24289:162;;;24425:14;;24401:38;;:21;:38;:::i;:::-;24395:44;;24289:162;24490:3;24471:1;24484;24473;:8;:12;;;;:::i;:::-;24471:15;;;;;;;;:::i;:::-;;;;;;;:22;;24463:58;;;;-1:-1:-1;;;24463:58:0;;8427:2:1;24463:58:0;;;8409:21:1;8466:2;8446:18;;;8439:30;8505:25;8485:18;;;8478:53;8548:18;;24463:58:0;8225:347:1;24463:58:0;24579:1;24592;24581;:8;:12;;;;:::i;:::-;24579:15;;;;;;;;:::i;:::-;;;;;;;24554:21;:40;;24532:118;;;;-1:-1:-1;;;24532:118:0;;8779:2:1;24532:118:0;;;8761:21:1;8818:2;8798:18;;;8791:30;8857;8837:18;;;8830:58;8905:18;;24532:118:0;8577:352:1;24532:118:0;24663:51;198:10;24698:1;24711;24700;:8;:12;;;;:::i;:::-;24698:15;;;;;;;;:::i;:::-;;;;;;;24663:20;:51::i;:::-;24725:27;198:10;24745:6;24725:5;:27::i;:::-;24785:1;24798;24787;:8;:12;;;;:::i;:::-;24785:15;;;;;;;;:::i;:::-;;;;;;;24765:16;;:35;;;;;;;:::i;:::-;;;;;;;;24826:6;24811:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;24850:57:0;;-1:-1:-1;198:10:0;24883:6;24891:1;24904;24893;:8;:12;;;;:::i;:::-;24891:15;;;;;;;;:::i;:::-;;;;;;;;;;;;24850:57;;;-1:-1:-1;;;;;9292:32:1;;;9274:51;;9341:18;;;9334:34;;;;9384:18;;9377:34;9262:2;9247:18;24850:57:0;;;;;;;-1:-1:-1;24925:4:0;;23915:1022;-1:-1:-1;;;;23915:1022:0:o;25630:446::-;25762:4;25779:36;25789:6;25797:9;25808:6;25779:9;:36::i;:::-;25826:220;25849:6;198:10;25897:138;25953:6;25897:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25897:19:0;;;;;;:11;:19;;;;;;;;198:10;25897:33;;;;;;;;;;:37;:138::i;:::-;25826:8;:220::i;:::-;-1:-1:-1;26064:4:0;25630:446;;;;;:::o;23439:128::-;23546:11;-1:-1:-1;;;;;20025:18:0;23492:7;20025:18;;;:9;:18;;;;;;23519:12;;:40;;:16;:40::i;:::-;23512:47;;23439:128;:::o;21634:168::-;6561:6;;-1:-1:-1;;;;;6561:6:0;198:10;6561:22;6553:67;;;;-1:-1:-1;;;6553:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21753:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:41;;-1:-1:-1;;21753:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21634:168::o;20235:293::-;198:10;20348:4;20437:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20437:34:0;;;;;;;;;;20348:4;;20365:133;;20415:7;;20437:50;;20476:10;20437:38;:50::i;22833:149::-;6561:6;;-1:-1:-1;;;;;6561:6:0;198:10;6561:22;6553:67;;;;-1:-1:-1;;;6553:67:0;;;;;;;:::i;:::-;22969:5:::1;22952:13;19904:12:::0;;;19824:100;22952:13:::1;22941:24;::::0;:8;:24:::1;:::i;:::-;22940:34;;;;:::i;:::-;22913:23;:61:::0;-1:-1:-1;22833:149:0:o;22180:370::-;6561:6;;-1:-1:-1;;;;;6561:6:0;198:10;6561:22;6553:67;;;;-1:-1:-1;;;6553:67:0;;;;;;;:::i;:::-;22294:12:::1;:24:::0;;;22329:13:::1;:26:::0;;;22389:31:::1;22309:9:::0;22345:10;22389:16:::1;:31::i;:::-;22368:18;:52:::0;;;22475:1:::1;-1:-1:-1::0;22453:23:0::1;22431:111;;;::::0;-1:-1:-1;;;22431:111:0;;10158:2:1;22431:111:0::1;::::0;::::1;10140:21:1::0;10197:2;10177:18;;;10170:30;10236:34;10216:18;;;10209:62;-1:-1:-1;;;10287:18:1;;;10280:36;10333:19;;22431:111:0::1;9956:402:1::0;22431:111:0::1;22180:370:::0;;:::o;22990:129::-;6561:6;;-1:-1:-1;;;;;6561:6:0;198:10;6561:22;6553:67;;;;-1:-1:-1;;;6553:67:0;;;;;;;:::i;:::-;23071:18:::1;:40:::0;;-1:-1:-1;;;;;;23071:40:0::1;-1:-1:-1::0;;;;;23071:40:0;;;::::1;::::0;;;::::1;::::0;;22990:129::o;6648:145::-;6561:6;;-1:-1:-1;;;;;6561:6:0;198:10;6561:22;6553:67;;;;-1:-1:-1;;;6553:67:0;;;;;;;:::i;:::-;6752:1:::1;6736:6:::0;;6715:40:::1;::::0;-1:-1:-1;;;;;6736:6:0;;::::1;::::0;6715:40:::1;::::0;6752:1;;6715:40:::1;6783:1;6766:19:::0;;-1:-1:-1;;;;;;6766:19:0::1;::::0;;6648:145::o;19638:87::-;19677:13;19710:7;19703:14;;;;;:::i;20536:393::-;20654:4;20671:228;198:10;20721:7;20743:145;20800:15;20743:145;;;;;;;;;;;;;;;;;198:10;20743:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20743:34:0;;;;;;;;;;;;:38;:145::i;23306:125::-;6561:6;;-1:-1:-1;;;;;6561:6:0;198:10;6561:22;6553:67;;;;-1:-1:-1;;;6553:67:0;;;;;;;:::i;:::-;23387:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;23387:36:0::1;-1:-1:-1::0;;;;23387:36:0;;::::1;::::0;;;::::1;::::0;;23306:125::o;25430:192::-;25533:4;25550:42;198:10;25574:9;25585:6;25550:9;:42::i;25112:310::-;25212:16;;;25226:1;25212:16;;;;;;;;25168:7;;;;25212:16;25226:1;25212:16;;;;;;;;;;-1:-1:-1;25212:16:0;25188:40;;25257:4;25239;25244:1;25239:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25239:23:0;;;:7;;;;;;;;;;:23;;;;25283:15;;:22;;;-1:-1:-1;;;25283:22:0;;;;:15;;;;;:20;;:22;;;;;25239:7;;25283:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25273:4;25278:1;25273:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25273:32:0;;;:7;;;;;;;;;:32;25336:15;;:43;;-1:-1:-1;;;25336:43:0;;25318:15;;25336;;;;;:29;;:43;;25366:6;;25374:4;;25336:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25336:43:0;;;;;;;;;;;;:::i;:::-;25318:61;;25399:1;25412;25401;:8;:12;;;;:::i;:::-;25399:15;;;;;;;;:::i;:::-;;;;;;;25392:22;;;;25112:310;;;:::o;23127:171::-;6561:6;;-1:-1:-1;;;;;6561:6:0;198:10;6561:22;6553:67;;;;-1:-1:-1;;;6553:67:0;;;;;;;:::i;:::-;23204:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;23204:32:0::1;-1:-1:-1::0;;;;23204:32:0;;::::1;;::::0;;23252:38:::1;::::0;::::1;::::0;::::1;::::0;23228:8;1188:14:1;1181:22;1163:41;;1151:2;1136:18;;1023:187;23252:38:0::1;;;;;;;;23127:171:::0;:::o;21519:107::-;6561:6;;-1:-1:-1;;;;;6561:6:0;198:10;6561:22;6553:67;;;;-1:-1:-1;;;6553:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21587:24:0::1;;::::0;;;:15:::1;:24;::::0;;;;:31;;-1:-1:-1;;21587:31:0::1;21614:4;21587:31;::::0;;21519:107::o;22558:267::-;6561:6;;-1:-1:-1;;;;;6561:6:0;198:10;6561:22;6553:67;;;;-1:-1:-1;;;6553:67:0;;;;;;;:::i;:::-;22689:10:::1;:24:::0;;;22724:11:::1;:26:::0;;;22790:27:::1;22702:11:::0;22738:12;22790:14:::1;:27::i;:::-;22763:24;:54:::0;-1:-1:-1;;22558:267:0:o;6801:281::-;6561:6;;-1:-1:-1;;;;;6561:6:0;198:10;6561:22;6553:67;;;;-1:-1:-1;;;6553:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6904:22:0;::::1;6882:110;;;::::0;-1:-1:-1;;;6882:110:0;;10565:2:1;6882:110:0::1;::::0;::::1;10547:21:1::0;10604:2;10584:18;;;10577:30;10643:34;10623:18;;;10616:62;-1:-1:-1;;;10694:18:1;;;10687:36;10740:19;;6882:110:0::1;10363:402:1::0;6882:110:0::1;7029:6;::::0;;7008:38:::1;::::0;-1:-1:-1;;;;;7008:38:0;;::::1;::::0;7029:6;::::1;::::0;7008:38:::1;::::0;::::1;7057:6;:17:::0;;-1:-1:-1;;;;;;7057:17:0::1;-1:-1:-1::0;;;;;7057:17:0;;;::::1;::::0;;;::::1;::::0;;6801:281::o;21810:362::-;6561:6;;-1:-1:-1;;;;;6561:6:0;198:10;6561:22;6553:67;;;;-1:-1:-1;;;6553:67:0;;;;;;;:::i;:::-;21923:11:::1;:23:::0;;;21957:12:::1;:25:::0;;;22015:29:::1;21937:9:::0;21972:10;22015:15:::1;:29::i;:::-;21995:17;:49:::0;;;22098:1:::1;-1:-1:-1::0;22077:22:0::1;22055:109;;;::::0;-1:-1:-1;;;22055:109:0;;10972:2:1;22055:109:0::1;::::0;::::1;10954:21:1::0;11011:2;10991:18;;;10984:30;11050:34;11030:18;;;11023:62;-1:-1:-1;;;11101:18:1;;;11094:35;11146:19;;22055:109:0::1;10770:401:1::0;21131:380:0;-1:-1:-1;;;;;21267:19:0;;21259:68;;;;-1:-1:-1;;;21259:68:0;;11378:2:1;21259:68:0;;;11360:21:1;11417:2;11397:18;;;11390:30;11456:34;11436:18;;;11429:62;-1:-1:-1;;;11507:18:1;;;11500:34;11551:19;;21259:68:0;11176:400:1;21259:68:0;-1:-1:-1;;;;;21346:21:0;;21338:68;;;;-1:-1:-1;;;21338:68:0;;11783:2:1;21338:68:0;;;11765:21:1;11822:2;11802:18;;;11795:30;11861:34;11841:18;;;11834:62;-1:-1:-1;;;11912:18:1;;;11905:32;11954:19;;21338:68:0;11581:398:1;21338:68:0;-1:-1:-1;;;;;21419:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21471:32;;1596:25:1;;;21471:32:0;;1569:18:1;21471:32:0;;;;;;;;21131:380;;;:::o;23575:151::-;23692:26;;-1:-1:-1;;;;;23692:18:0;;;:26;;;;;23711:6;;23692:26;;;;23711:6;23692:18;:26;;;;;;;;;;;;;;;;;;;;;23575:151;;:::o;19071:468::-;-1:-1:-1;;;;;19155:21:0;;19147:67;;;;-1:-1:-1;;;19147:67:0;;12186:2:1;19147:67:0;;;12168:21:1;12225:2;12205:18;;;12198:30;12264:34;12244:18;;;12237:62;-1:-1:-1;;;12315:18:1;;;12308:31;12356:19;;19147:67:0;11984:397:1;19147:67:0;-1:-1:-1;;;;;19252:18:0;;19227:22;19252:18;;;:9;:18;;;;;;19289:24;;;;19281:71;;;;-1:-1:-1;;;19281:71:0;;12588:2:1;19281:71:0;;;12570:21:1;12627:2;12607:18;;;12600:30;12666:34;12646:18;;;12639:62;-1:-1:-1;;;12717:18:1;;;12710:32;12759:19;;19281:71:0;12386:398:1;19281:71:0;-1:-1:-1;;;;;19388:18:0;;;;;;:9;:18;;;;;19409:23;;;19388:44;;19454:12;:22;;19426:6;;19388:18;19454:22;;19426:6;;19454:22;:::i;:::-;;;;-1:-1:-1;;19494:37:0;;1596:25:1;;;19520:1:0;;-1:-1:-1;;;;;19494:37:0;;;-1:-1:-1;;;;;;;;;;;19494:37:0;1584:2:1;1569:18;19494:37:0;1450:177:1;26084:1802:0;-1:-1:-1;;;;;26224:20:0;;26216:70;;;;-1:-1:-1;;;26216:70:0;;12991:2:1;26216:70:0;;;12973:21:1;13030:2;13010:18;;;13003:30;13069:34;13049:18;;;13042:62;-1:-1:-1;;;13120:18:1;;;13113:35;13165:19;;26216:70:0;12789:401:1;26216:70:0;-1:-1:-1;;;;;26305:23:0;;26297:71;;;;-1:-1:-1;;;26297:71:0;;13397:2:1;26297:71:0;;;13379:21:1;13436:2;13416:18;;;13409:30;13475:34;13455:18;;;13448:62;-1:-1:-1;;;13526:18:1;;;13519:33;13569:19;;26297:71:0;13195:399:1;26297:71:0;26385:16;;-1:-1:-1;;;26385:16:0;;;;26381:1498;;;26418:41;26433:6;26441:9;26452:6;26418:14;:41::i;:::-;;23692:26;23575:151;;:::o;26381:1498::-;26541:4;26492:28;20025:18;;;:9;:18;;;;;;26634:23;;26593:64;;;;;;;26696:61;;-1:-1:-1;26741:16:0;;-1:-1:-1;;;26741:16:0;;;;26740:17;26696:61;:106;;;;-1:-1:-1;;;;;;26779:23:0;;;;;;:15;:23;;;;;;;;26778:24;26696:106;:148;;;;-1:-1:-1;26823:21:0;;-1:-1:-1;;;26823:21:0;;;;26696:148;26674:374;;;26883:25;;-1:-1:-1;;;26883:25:0;;;;26879:98;;;26954:23;;26931:46;;26879:98;26996:36;27011:20;26996:14;:36::i;:::-;27087:16;;-1:-1:-1;;;27087:16:0;;;;27086:17;:64;;;;-1:-1:-1;;;;;;27124:26:0;;;;;;:15;:26;;;;;;;;27086:64;:98;;;;-1:-1:-1;27171:13:0;;;;27086:98;:170;;;;;27241:15;;27224:14;;:32;;;;:::i;:::-;27205:15;:51;;27086:170;:221;;;;-1:-1:-1;;;;;;27278:29:0;;;;;;:21;:29;;;;;;;;27277:30;27086:221;27064:323;;;27342:29;:27;:29::i;:::-;;27064:323;27423:102;;;;;;;;;;;-1:-1:-1;;;27423:102:0;;;;;;;;-1:-1:-1;;;;;27423:17:0;;-1:-1:-1;27423:17:0;;;:9;:17;;;;;;;;:102;;27463:6;;27423:21;:102::i;:::-;-1:-1:-1;;;;;27403:17:0;;;;;;:9;:17;;;;;;;;:122;;;;27565:21;:29;;;;;;;;;:82;;-1:-1:-1;;;;;;27615:32:0;;;;;;:21;:32;;;;;;;;27565:82;27564:164;;27694:34;27702:6;27710:9;27721:6;27694:7;:34::i;:::-;27564:164;;;27668:6;27564:164;-1:-1:-1;;;;;27768:20:0;;;;;;:9;:20;;;;;;27542:186;;-1:-1:-1;27768:37:0;;27542:186;27768:24;:37::i;:::-;-1:-1:-1;;;;;27745:20:0;;;;;;;:9;:20;;;;;;;:60;;;;27827:40;;;;;;-1:-1:-1;;;;;;;;;;;27827:40:0;;;27855:11;1596:25:1;;1584:2;1569:18;;1450:177;27827:40:0;;;;;;;;26477:1402;;;26084:1802;;;:::o;1629:226::-;1749:7;1785:12;1777:6;;;;1769:29;;;;-1:-1:-1;;;1769:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1809:9:0;1821:5;1825:1;1821;:5;:::i;:::-;1809:17;1629:226;-1:-1:-1;;;;;1629:226:0:o;1485:136::-;1543:7;1570:43;1574:1;1577;1570:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1563:50;1485:136;-1:-1:-1;;;1485:136:0:o;1296:181::-;1354:7;;1386:5;1390:1;1386;:5;:::i;:::-;1374:17;;1415:1;1410;:6;;1402:46;;;;-1:-1:-1;;;1402:46:0;;13801:2:1;1402:46:0;;;13783:21:1;13840:2;13820:18;;;13813:30;13879:29;13859:18;;;13852:57;13926:18;;1402:46:0;13599:351:1;27894:401:0;28058:90;;;;;;;;;;;-1:-1:-1;;;28058:90:0;;;;;;;;-1:-1:-1;;;;;28058:17:0;;28021:4;28058:17;;;:9;:17;;;;;;;:90;;28094:6;;28058:21;:90::i;:::-;-1:-1:-1;;;;;28038:17:0;;;;;;;:9;:17;;;;;;:110;;;;28182:20;;;;;;;:32;;28207:6;28182:24;:32::i;:::-;-1:-1:-1;;;;;28159:20:0;;;;;;;:9;:20;;;;;;;:55;;;;28230:35;;;;;;-1:-1:-1;;;;;;;;;;;28230:35:0;;;28258:6;1596:25:1;;1584:2;1569:18;;1450:177;28230:35:0;;;;;;;;-1:-1:-1;28283:4:0;27894:401;;;;;:::o;28303:616::-;18069:16;:23;;-1:-1:-1;;;;18069:23:0;-1:-1:-1;;;18069:23:0;;;28406:21:::1;28462:7:::0;28482:31:::1;28462:7:::0;28482:16:::1;:31::i;:::-;28524:22;28549:71;:21;28589:20:::0;28549:25:::1;:71::i;:::-;28524:96;;28633:21;28657:85;28707:24;;28657:31;28676:11;;28657:14;:18;;:31;;;;:::i;:::-;:35:::0;::::1;:85::i;:::-;28633:109:::0;-1:-1:-1;28753:20:0::1;28776:33;:14:::0;28633:109;28776:18:::1;:33::i;:::-;28753:56:::0;-1:-1:-1;28826:16:0;;28822:89:::1;;28878:18;::::0;28857:54:::1;::::0;-1:-1:-1;;;;;28878:18:0::1;28898:12:::0;28857:20:::1;:54::i;:::-;-1:-1:-1::0;;18115:16:0;:24;;-1:-1:-1;;;;18115:24:0;;;-1:-1:-1;;;;28303:616:0:o;30908:738::-;30999:15;30982:14;:32;31110:11;;-1:-1:-1;;;;;31110:11:0;30965:4;20025:18;;;:9;:18;;;;;;31172:20;31195:77;31256:5;31195:42;31220:16;;31195:20;:24;;:42;;;;:::i;:77::-;31172:100;-1:-1:-1;31350:16:0;;31346:124;;31389:11;;31383:32;;-1:-1:-1;;;;;31389:11:0;31402:12;31383:5;:32::i;:::-;31445:12;31430:11;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;31346:124:0;31582:11;;31605;;;-1:-1:-1;;;;;;31605:11:0;;;;-1:-1:-1;;;;;31582:11:0;;;;;;31605:9;;:11;;;;;31545:19;;31605:11;;;;;;;31545:19;31582:11;31605;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31634:4;31627:11;;;;;30908:738;:::o;30114:630::-;-1:-1:-1;;;;;30292:23:0;;30234:7;30292:23;;;:15;:23;;;;;;30234:7;;30292:23;;30288:222;;;30344:38;30378:3;30344:29;30355:17;;30344:6;:10;;:29;;;;:::i;:38::-;30332:50;;30288:222;;;-1:-1:-1;;;;;30404:26:0;;;;;;:15;:26;;;;;;;;30400:110;;;30459:39;30494:3;30459:30;30470:18;;30459:6;:10;;:30;;;;:::i;:39::-;30447:51;;30400:110;30526:13;;30522:174;;30601:4;30583:24;;;;:9;:24;;;;;;:39;;30612:9;30583:28;:39::i;:::-;30574:4;30556:24;;;;:9;:24;;;;;;;:66;;;;30642:42;;-1:-1:-1;;;;;30642:42:0;;;-1:-1:-1;;;;;;;;;;;30642:42:0;;;30674:9;1596:25:1;;1584:2;1569:18;;1450:177;30642:42:0;;;;;;;;30522:174;30715:21;:6;30726:9;30715:10;:21::i;28927:658::-;29077:16;;;29091:1;29077:16;;;;;;;;29053:21;;29077:16;;;;;;;;;;-1:-1:-1;29077:16:0;29053:40;;29122:4;29104;29109:1;29104:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29104:23:0;;;:7;;;;;;;;;;:23;;;;29148:15;;:22;;;-1:-1:-1;;;29148:22:0;;;;:15;;;;;:20;;:22;;;;;29104:7;;29148:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29138:4;29143:1;29138:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29138:32:0;;;:7;;;;;;;;;:32;29215:15;;29183:62;;29200:4;;29215:15;29233:11;29183:8;:62::i;:::-;29284:15;;:240;;-1:-1:-1;;;29284:240:0;;-1:-1:-1;;;;;29284:15:0;;;;:66;;:240;;29365:11;;29284:15;;29435:4;;29462;;29498:15;;29284:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29542:35;29559:11;29572:4;29542:35;;;;;;;:::i;:::-;;;;;;;;28982:603;28927:658;:::o;1863:250::-;1921:7;1945:1;1950;1945:6;1941:47;;-1:-1:-1;1975:1:0;1968:8;;1941:47;2000:9;2012:5;2016:1;2012;:5;:::i;:::-;2000:17;-1:-1:-1;2045:1:0;2036:5;2040:1;2000:17;2036:5;:::i;:::-;:10;2028:56;;;;-1:-1:-1;;;2028:56:0;;14744:2:1;2028:56:0;;;14726:21:1;14783:2;14763:18;;;14756:30;14822:34;14802:18;;;14795:62;-1:-1:-1;;;14873:18:1;;;14866:31;14914:19;;2028:56:0;14542:397:1;2121:132:0;2179:7;2206:39;2210:1;2213;2206:39;;;;;;;;;;;;;;;;;2381:7;2416:12;2409:5;2401:28;;;;-1:-1:-1;;;2401:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2440:9:0;2452:5;2456:1;2452;:5;:::i;14:548: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;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1632:180::-;1691:6;1744:2;1732:9;1723:7;1719:23;1715:32;1712:52;;;1760:1;1757;1750:12;1712:52;-1:-1:-1;1783:23:1;;1632:180;-1:-1:-1;1632:180:1:o;1817:456::-;1894:6;1902;1910;1963:2;1951:9;1942:7;1938:23;1934:32;1931:52;;;1979:1;1976;1969:12;1931:52;2018:9;2005:23;2037:31;2062:5;2037:31;:::i;:::-;2087:5;-1:-1:-1;2144:2:1;2129:18;;2116:32;2157:33;2116:32;2157:33;:::i;:::-;1817:456;;2209:7;;-1:-1:-1;;;2263:2:1;2248:18;;;;2235:32;;1817:456::o;2486:160::-;2551:20;;2607:13;;2600:21;2590:32;;2580:60;;2636:1;2633;2626:12;2580:60;2486:160;;;:::o;2651:315::-;2716:6;2724;2777:2;2765:9;2756:7;2752:23;2748:32;2745:52;;;2793:1;2790;2783:12;2745:52;2832:9;2819:23;2851:31;2876:5;2851:31;:::i;:::-;2901:5;-1:-1:-1;2925:35:1;2956:2;2941:18;;2925:35;:::i;:::-;2915:45;;2651:315;;;;;:::o;3160:247::-;3219:6;3272:2;3260:9;3251:7;3247:23;3243:32;3240:52;;;3288:1;3285;3278:12;3240:52;3327:9;3314:23;3346:31;3371:5;3346:31;:::i;3412:248::-;3480:6;3488;3541:2;3529:9;3520:7;3516:23;3512:32;3509:52;;;3557:1;3554;3547:12;3509:52;-1:-1:-1;;3580:23:1;;;3650:2;3635:18;;;3622:32;;-1:-1:-1;3412:248:1:o;3665:180::-;3721:6;3774:2;3762:9;3753:7;3749:23;3745:32;3742:52;;;3790:1;3787;3780:12;3742:52;3813:26;3829:9;3813:26;:::i;4174:388::-;4242:6;4250;4303:2;4291:9;4282:7;4278:23;4274:32;4271:52;;;4319:1;4316;4309:12;4271:52;4358:9;4345:23;4377:31;4402:5;4377:31;:::i;:::-;4427:5;-1:-1:-1;4484:2:1;4469:18;;4456:32;4497:33;4456:32;4497:33;:::i;:::-;4549:7;4539:17;;;4174:388;;;;;:::o;4567:380::-;4646:1;4642:12;;;;4689;;;4710:61;;4764:4;4756:6;4752:17;4742:27;;4710:61;4817:2;4809:6;4806:14;4786:18;4783:38;4780:161;;4863:10;4858:3;4854:20;4851:1;4844:31;4898:4;4895:1;4888:15;4926:4;4923:1;4916:15;4780:161;;4567:380;;;:::o;5305:127::-;5366:10;5361:3;5357:20;5354:1;5347:31;5397:4;5394:1;5387:15;5421:4;5418:1;5411:15;5437:127;5498:10;5493:3;5489:20;5486:1;5479:31;5529:4;5526:1;5519:15;5553:4;5550:1;5543:15;5569:251;5639:6;5692:2;5680:9;5671:7;5667:23;5663:32;5660:52;;;5708:1;5705;5698:12;5660:52;5740:9;5734:16;5759:31;5784:5;5759:31;:::i;5825:461::-;5878:3;5916:5;5910:12;5943:6;5938:3;5931:19;5969:4;5998:2;5993:3;5989:12;5982:19;;6035:2;6028:5;6024:14;6056:1;6066:195;6080:6;6077:1;6074:13;6066:195;;;6145:13;;-1:-1:-1;;;;;6141:39:1;6129:52;;6201:12;;;;6236:15;;;;6177:1;6095:9;6066:195;;;-1:-1:-1;6277:3:1;;5825:461;-1:-1:-1;;;;;5825:461:1:o;6291:332::-;6498:6;6487:9;6480:25;6541:2;6536;6525:9;6521:18;6514:30;6461:4;6561:56;6613:2;6602:9;6598:18;6590:6;6561:56;:::i;:::-;6553:64;6291:332;-1:-1:-1;;;;6291:332:1:o;6628:1105::-;6723:6;6754:2;6797;6785:9;6776:7;6772:23;6768:32;6765:52;;;6813:1;6810;6803:12;6765:52;6846:9;6840:16;6875:18;6916:2;6908:6;6905:14;6902:34;;;6932:1;6929;6922:12;6902:34;6970:6;6959:9;6955:22;6945:32;;7015:7;7008:4;7004:2;7000:13;6996:27;6986:55;;7037:1;7034;7027:12;6986:55;7066:2;7060:9;7088:2;7084;7081:10;7078:36;;;7094:18;;:::i;:::-;7140:2;7137:1;7133:10;7172:2;7166:9;7235:2;7231:7;7226:2;7222;7218:11;7214:25;7206:6;7202:38;7290:6;7278:10;7275:22;7270:2;7258:10;7255:18;7252:46;7249:72;;;7301:18;;:::i;:::-;7337:2;7330:22;7387:18;;;7421:15;;;;-1:-1:-1;7463:11:1;;;7459:20;;;7491:19;;;7488:39;;;7523:1;7520;7513:12;7488:39;7547:11;;;;7567:135;7583:6;7578:3;7575:15;7567:135;;;7649:10;;7637:23;;7600:12;;;;7680;;;;7567:135;;;7721:6;6628:1105;-1:-1:-1;;;;;;;;6628:1105:1:o;7738:127::-;7799:10;7794:3;7790:20;7787:1;7780:31;7830:4;7827:1;7820:15;7854:4;7851:1;7844:15;7870:217;7910:1;7936;7926:132;;7980:10;7975:3;7971:20;7968:1;7961:31;8015:4;8012:1;8005:15;8043:4;8040:1;8033:15;7926:132;-1:-1:-1;8072:9:1;;7870:217::o;8092:128::-;8159:9;;;8180:11;;;8177:37;;;8194:18;;:::i;8934:125::-;8999:9;;;9020:10;;;9017:36;;;9033:18;;:::i;9422:356::-;9624:2;9606:21;;;9643:18;;;9636:30;9702:34;9697:2;9682:18;;9675:62;9769:2;9754:18;;9422:356::o;9783:168::-;9856:9;;;9887;;9904:15;;;9898:22;;9884:37;9874:71;;9925:18;;:::i;13955:582::-;14254:6;14243:9;14236:25;14297:6;14292:2;14281:9;14277:18;14270:34;14340:3;14335:2;14324:9;14320:18;14313:31;14217:4;14361:57;14413:3;14402:9;14398:19;14390:6;14361:57;:::i;:::-;-1:-1:-1;;;;;14454:32:1;;;;14449:2;14434:18;;14427:60;-1:-1:-1;14518:3:1;14503:19;14496:35;14353:65;13955:582;-1:-1:-1;;;13955:582:1:o

Swarm Source

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