ETH Price: $2,954.72 (-5.32%)
Gas: 7 Gwei

Token

HarryPotterObamaSmurf1Pepe (Биткойн)
 

Overview

Max Total Supply

21,000,000 Биткойн

Holders

98

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
84,937.872658669 Биткойн

Value
$0.00
0x33527f041a8eed726178a46931e6367ba21d1853
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:
BTC

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
*/

// SPDX-License-Identifier: MIT

/**


**/

pragma solidity ^0.8.17;

abstract contract HarryPotterObamaSmurf1Pepe {
    address public marketingWallet = 0xf3dCfb67bCD419fA8FD984b50c1f1223DB30ADC7;

    string constant _name = "HarryPotterObamaSmurf1Pepe";
    string constant _symbol = "\u0411\u0438\u0442\u043a\u043e\u0439\u043d";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 21 * 10**6 * 10**_decimals;
    uint256 public _maxTxAmount = (_totalSupply ) / 50;
    uint256 public _maxWalletToken = (_totalSupply ) / 50;
    uint256 public buyFee             = 10;
    uint256 public buyTotalFee        = buyFee;
    uint256 public swapLpFee          = 1;
    uint256 public swapMarketing      = 49;
    uint256 public swapTotalFee       = swapMarketing + swapLpFee;
    uint256 public transFee           = 0;
    uint256 public feeDenominator     = 100;
}

// SafeMath Library

library SafeMath {

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

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

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

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

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

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

// Standard IERC20 Interface

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

// Context

abstract contract Context {
    //function _msgSender() internal view virtual returns (address payable) {
    function _msgSender() internal view virtual returns (address) {
        return 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;
    }
}

// Ownership

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

    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 renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

// Uniswap Factory

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

// Uniswap Pair

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

// Uniswap Router

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

// Uniswap Router Updated

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 BTC is HarryPotterObamaSmurf1Pepe, IERC20, Ownable {
    using SafeMath for uint256;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isMaxExempt;
    mapping (address => bool) isTimelockExempt;

    address public autoLiquidityReceiver;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IUniswapV2Router02 public immutable contractRouter;
    address public immutable uniswapV2Pair;

    bool public tradingOpen = false;

    bool public buyCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 10;
    mapping (address => uint) private cooldownTimer;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply  / 100;
    uint256 public swapAmount = _totalSupply  / 50;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Mainnet & Testnet ETH
         // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        contractRouter = _uniswapV2Router;

        _allowances[address(this)][address(contractRouter)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        isMaxExempt[msg.sender] = true;

        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;

        isFeeExempt[marketingWallet] = true;
        isMaxExempt[marketingWallet] = true;
        isTxLimitExempt[marketingWallet] = true;

        autoLiquidityReceiver = msg.sender;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWallet(uint256 maxWalletPercent) external onlyOwner() {
        _maxWalletToken = maxWalletPercent;
    }

    function setMaxTx(uint256 maxTxPercent) external onlyOwner() {
        _maxTxAmount = maxTxPercent;
    }

    function setTxLimit(uint256 amount) external onlyOwner() {
        _maxTxAmount = amount;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(sender != owner() && recipient != owner()){
            require(tradingOpen,"Trading not open yet");
        }

        bool inSell = (recipient == uniswapV2Pair);
        bool inTransfer = (recipient != uniswapV2Pair && sender != uniswapV2Pair);

        if (recipient != address(this) && 
            recipient != address(DEAD) && 
            recipient != uniswapV2Pair && 
            recipient != marketingWallet && 
            recipient != autoLiquidityReceiver
        ){
            uint256 heldTokens = balanceOf(recipient);
            if(!isMaxExempt[recipient]) {
                require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");
            }
        }

        if (sender == uniswapV2Pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]
        ){
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1min between two buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }

        // Checks max transaction limit
        // but no point if the recipient is exempt
        // this check ensures that someone that is buying and is txnExempt then they are able to buy any amount
        if(!isTxLimitExempt[recipient]) {
            checkTxLimit(sender, amount);
        }

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

        uint256 amountReceived = amount;

        // Do NOT take a fee if sender AND recipient are NOT the contract
        // i.e. you are doing a transfer
        if(inTransfer) {
            if(transFee > 0) {
                amountReceived = takeTransferFee(sender, amount);
            }
        } else {
            amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount, inSell) : amount;
            
            if(shouldSwapBack()){ swapBack(); }
        }

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

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    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 checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeTransferFee(address sender, uint256 amount) internal returns (uint256) {

        uint256 feeToTake = transFee;
        uint256 feeAmount = amount.mul(feeToTake).mul(100).div(feeDenominator * 100);
        
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) {
        uint256 feeToTake;
        feeToTake = isSell ? swapTotalFee : buyTotalFee;
        uint256 feeAmount = amount.mul(feeToTake).mul(100).div(feeDenominator * 100);
        
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != uniswapV2Pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner() {
        uint256 amountETH = address(this).balance;
        payable(marketingWallet).transfer(amountETH * amountPercentage / 100);
    }

    function clearStuckBalance_sender(uint256 amountPercentage) external onlyOwner() {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

    // switch Trading
    function tradingStatus(bool _status) public onlyOwner {
        tradingOpen = _status;
    }

    function feeOnTransfer(uint256 fee) external onlyOwner() {
        require(swapTotalFee <= 10, "Transfer fee can not be above 10");
        transFee = fee;
    }

    function feeOnSell(uint256 _newSwapLpFee, uint256 _newSwapMarketingFee, uint256 _feeDenominator) external onlyOwner() {
        require(swapTotalFee <= 80, "Sell tax cannot be above 80");
        swapLpFee = _newSwapLpFee;
        swapMarketing = _newSwapMarketingFee;
        swapTotalFee = _newSwapLpFee.add(_newSwapMarketingFee);
        feeDenominator = _feeDenominator;
    }

    function feeOnBuy(uint256 buyTax) external onlyOwner() {
        require(buyTax <= 80, "Buy tax cannot be above 80");
        buyTotalFee = buyTax;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : swapLpFee;
        uint256 amountToLiquify = swapAmount.mul(dynamicLiquidityFee).div(swapTotalFee).div(2);
        uint256 amountToSwap = swapAmount.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

        contractRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = swapTotalFee.sub(dynamicLiquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH.mul(swapLpFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(swapMarketing).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingWallet).call{value: amountETHMarketing, gas: 30000}("");

        // Supress warning msg
        tmpSuccess = false;

        if(amountToLiquify > 0){
            contractRouter.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner() {
        isFeeExempt[holder] = exempt;
    }

    function setIsMaxExempt(address holder, bool exempt) external onlyOwner() {
        isMaxExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner() {
        isTxLimitExempt[holder] = exempt;
    }

    function setIsTimelockExempt(address holder, bool exempt) external onlyOwner() {
        isTimelockExempt[holder] = exempt;
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _newMarketingWallet) external onlyOwner() {

        isFeeExempt[marketingWallet] = false;
        isFeeExempt[_newMarketingWallet] = true;

        isMaxExempt[_newMarketingWallet] = true;

        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingWallet = _newMarketingWallet;
    }

    function setSwapThresholdAmount(uint256 _amount) external onlyOwner() {
        swapThreshold = _amount;
    }

    function setSwapAmount(uint256 _amount) external onlyOwner() {
        if(_amount > swapThreshold) {
            swapAmount = swapThreshold;
        } else {
            swapAmount = _amount;
        }        
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner() {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

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

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(uniswapV2Pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

/* Airdrop */
    function airDropCustom(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

        require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
        require(addresses.length == tokens.length,"Mismatch between Address and token count");

        uint256 SCCC = 0;

        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + tokens[i];
        }

        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens[i]);
        }
    }

    function airDropFixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {

        require(addresses.length < 801,"GAS Error: max airdrop limit is 800 addresses");

        uint256 SCCC = tokens * addresses.length;

        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens);
        }
    }

    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airDropCustom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"airDropFixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance_sender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"}],"name":"feeOnBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSwapLpFee","type":"uint256"},{"internalType":"uint256","name":"_newSwapMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"feeOnSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"feeOnTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_newMarketingWallet","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsMaxExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletPercent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapThresholdAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapLpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040525f80546001600160a01b03191673f3dcfb67bcd419fa8fd984b50c1f1223db30adc7179055620000376009600a6200050a565b62000047906301406f4062000521565b60015560326001546200005b91906200053b565b60025560326001546200006f91906200053b565b600355600a600455600454600555600160065560316007556006546007546200009991906200055b565b6008555f6009556064600a819055600e805461dead6001600160a01b031991821617909155600f80549091169055601460175560188190556019805462ffffff1916620a0100179055601b805460ff1916600190811790915554620000ff91906200053b565b601c5560326001546200011391906200053b565b601d5534801562000122575f80fd5b50600b80546001600160a01b0319163390811790915560405181905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e0919062000571565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000252919062000571565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200029d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002c3919062000571565b6001600160a01b0390811660a0528181166080819052305f8181526011602090815260408083209483529381528382205f1990553380835260128083528584208054600160ff1991821681179092556013808652888720805483168417905560148087528988208054841685179055601587528988208054841685179055600e548b1688528988208054841685179055978752888720805483168417905586548a1687529285528786208054821683179055855489168652958452868520805487168217905584549097168452825284832080549094168617909355601680546001600160a01b031916841790559354828252601085528382208190559251928352909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000599565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200044f57815f1904821115620004335762000433620003fb565b808516156200044157918102915b93841c939080029062000414565b509250929050565b5f82620004675750600162000504565b816200047557505f62000504565b81600181146200048e57600281146200049957620004b9565b600191505062000504565b60ff841115620004ad57620004ad620003fb565b50506001821b62000504565b5060208310610133831016604e8410600b8410161715620004de575081810a62000504565b620004ea83836200040f565b805f1904821115620005005762000500620003fb565b0290505b92915050565b5f6200051a60ff84168362000457565b9392505050565b8082028115828204841417620005045762000504620003fb565b5f826200055657634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620005045762000504620003fb565b5f6020828403121562000582575f80fd5b81516001600160a01b03811681146200051a575f80fd5b60805160a0516126c4620005fa5f395f81816105db0152818161141d015281816116f20152818161172b01528181611792015281816118b00152611df101525f81816106fe01528181611f1001528181611fc8015261214501526126c45ff3fe608060405260043610610344575f3560e01c8063617fe0ed116101bd5780639b928c2f116100f2578063dd395c6311610092578063e632313c1161006d578063e632313c1461098b578063f2fde38b146109aa578063f84ba65d146109c9578063ffb54a99146109e8575f80fd5b8063dd395c6314610913578063dd62ed3e14610932578063e53c30b014610976575f80fd5b8063bc337182116100cd578063bc33718214610672578063ca33e64c146108b6578063cf703bb9146108d5578063d51ed1c8146108f4575f80fd5b80639b928c2f14610859578063a4b45c0014610878578063a9059cbb14610897575f80fd5b8063722b62ad1161015d5780637d1db4a5116101385780637d1db4a5146107dd578063893d20e8146107f25780638da5cb5b1461080657806395d89b4114610823575f80fd5b8063722b62ad1461078b57806375f0a874146107aa57806378109e54146107c8575f80fd5b80636ddd1713116101985780636ddd17131461072057806370a0823114610739578063713e4ae514610758578063715018a614610777575f80fd5b8063617fe0ed146106b0578063658d4b7f146106ce57806367ac77b4146106ed575f80fd5b80632b112e4911610293578063470624021161023357806350db71fb1161020e57806350db71fb14610634578063571ac8b0146106535780635c85974f146106725780635d0044ca14610691575f80fd5b806347062402146105b557806349bd5a5e146105ca5780634dd0e4d314610615575f80fd5b80633705b3921161026e5780633705b3921461054d578063442a583d1461056257806344a33fd21461058157806346e421a2146105a0575f80fd5b80632b112e49146105035780632e8fa82114610517578063313ce5671461052c575f80fd5b8063180b0d7e116102fe5780631e25dc54116102d95780631e25dc5414610491578063201e7991146104a657806323b872dd146104c557806329e04b4a146104e4575f80fd5b8063180b0d7e1461044957806318160ddd1461045e5780631da1db5e14610472575f80fd5b8063026f7d151461034f5780630445b6671461037757806306fdde031461038c578063095ea7b3146103da5780630d295980146104095780631161ae391461042a575f80fd5b3661034b57005b5f80fd5b34801561035a575f80fd5b5061036460075481565b6040519081526020015b60405180910390f35b348015610382575f80fd5b50610364601c5481565b348015610397575f80fd5b5060408051808201909152601a81527f4861727279506f747465724f62616d61536d757266315065706500000000000060208201525b60405161036e9190612207565b3480156103e5575f80fd5b506103f96103f4366004612267565b610a01565b604051901515815260200161036e565b348015610414575f80fd5b506104286104233660046122a5565b610a6d565b005b348015610435575f80fd5b506103f96104443660046122be565b610ab3565b348015610454575f80fd5b50610364600a5481565b348015610469575f80fd5b50600154610364565b34801561047d575f80fd5b5061042861048c3660046122de565b610ac6565b34801561049c575f80fd5b5061036460095481565b3480156104b1575f80fd5b506104286104c03660046122be565b610b40565b3480156104d0575f80fd5b506103f96104df3660046122f5565b610b75565b3480156104ef575f80fd5b506104286104fe3660046122de565b610c33565b34801561050e575f80fd5b50610364610c62565b348015610522575f80fd5b50610364601d5481565b348015610537575f80fd5b5060095b60405160ff909116815260200161036e565b348015610558575f80fd5b5061036460055481565b34801561056d575f80fd5b5061042861057c36600461237b565b610caa565b34801561058c575f80fd5b5061042861059b3660046122de565b610dec565b3480156105ab575f80fd5b5061036460065481565b3480156105c0575f80fd5b5061036460045481565b3480156105d5575f80fd5b506105fd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161036e565b348015610620575f80fd5b5061042861062f3660046122de565b610e27565b34801561063f575f80fd5b5061042861064e3660046123d3565b610ea7565b34801561065e575f80fd5b506103f961066d366004612406565b610efb565b34801561067d575f80fd5b5061042861068c3660046122de565b610f07565b34801561069c575f80fd5b506104286106ab3660046122de565b610f36565b3480156106bb575f80fd5b506019546103f990610100900460ff1681565b3480156106d9575f80fd5b506104286106e83660046123d3565b610f65565b3480156106f8575f80fd5b506105fd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561072b575f80fd5b50601b546103f99060ff1681565b348015610744575f80fd5b50610364610753366004612406565b610fb9565b348015610763575f80fd5b50610428610772366004612421565b610fd3565b348015610782575f80fd5b506104286111bb565b348015610796575f80fd5b5060195461053b9062010000900460ff1681565b3480156107b5575f80fd5b505f546105fd906001600160a01b031681565b3480156107d3575f80fd5b5061036460035481565b3480156107e8575f80fd5b5061036460025481565b3480156107fd575f80fd5b506105fd61122e565b348015610811575f80fd5b50600b546001600160a01b03166105fd565b34801561082e575f80fd5b5060408051808201909152600e81526dd091d0b8d182d0bad0bed0b9d0bd60901b60208201526103cd565b348015610864575f80fd5b5061042861087336600461249e565b611241565b348015610883575f80fd5b506104286108923660046124c7565b6112dc565b3480156108a2575f80fd5b506103f96108b1366004612267565b611376565b3480156108c1575f80fd5b506016546105fd906001600160a01b031681565b3480156108e0575f80fd5b506104286108ef3660046122de565b611382565b3480156108ff575f80fd5b5061036461090e3660046122de565b611404565b34801561091e575f80fd5b5061042861092d3660046123d3565b611454565b34801561093d575f80fd5b5061036461094c3660046124c7565b6001600160a01b039182165f90815260116020908152604080832093909416825291909152205490565b348015610981575f80fd5b5061036460085481565b348015610996575f80fd5b506104286109a53660046122de565b6114a8565b3480156109b5575f80fd5b506104286109c4366004612406565b6114ee565b3480156109d4575f80fd5b506104286109e33660046123d3565b6115d8565b3480156109f3575f80fd5b506019546103f99060ff1681565b335f8181526011602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a5b9086815260200190565b60405180910390a35060015b92915050565b600b546001600160a01b03163314610aa05760405162461bcd60e51b8152600401610a97906124fe565b60405180910390fd5b6019805460ff1916911515919091179055565b5f82610abe83611404565b119392505050565b600b546001600160a01b03163314610af05760405162461bcd60e51b8152600401610a97906124fe565b5f5447906001600160a01b03166108fc6064610b0c8585612547565b610b16919061255e565b6040518115909202915f818181858888f19350505050158015610b3b573d5f803e3d5ffd5b505050565b600b546001600160a01b03163314610b6a5760405162461bcd60e51b8152600401610a97906124fe565b601791909155601855565b6001600160a01b0383165f9081526011602090815260408083203384529091528120545f1914610c1e576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152601182528381203382529091529190912054610bfa91849061162c565b6001600160a01b0385165f9081526011602090815260408083203384529091529020555b610c29848484611657565b90505b9392505050565b600b546001600160a01b03163314610c5d5760405162461bcd60e51b8152600401610a97906124fe565b601c55565b600f545f90610ca590610c7d906001600160a01b0316610fb9565b600e54610c9f90610c96906001600160a01b0316610fb9565b60015490611b34565b90611b34565b905090565b600b546001600160a01b03163314610cd45760405162461bcd60e51b8152600401610a97906124fe565b6103218210610d3b5760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3830302061646472657373657360981b6064820152608401610a97565b5f610d468383612547565b905080610d5286610fb9565b1015610da05760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610a97565b5f5b83811015610de457610ddb86868684818110610dc057610dc061257d565b9050602002016020810190610dd59190612406565b85611b3f565b50600101610da2565b505050505050565b600b546001600160a01b03163314610e165760405162461bcd60e51b8152600401610a97906124fe565b47336108fc6064610b0c8585612547565b600b546001600160a01b03163314610e515760405162461bcd60e51b8152600401610a97906124fe565b6050811115610ea25760405162461bcd60e51b815260206004820152601a60248201527f427579207461782063616e6e6f742062652061626f76652038300000000000006044820152606401610a97565b600555565b600b546001600160a01b03163314610ed15760405162461bcd60e51b8152600401610a97906124fe565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b5f610a67825f19610a01565b600b546001600160a01b03163314610f315760405162461bcd60e51b8152600401610a97906124fe565b600255565b600b546001600160a01b03163314610f605760405162461bcd60e51b8152600401610a97906124fe565b600355565b600b546001600160a01b03163314610f8f5760405162461bcd60e51b8152600401610a97906124fe565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6001600160a01b03165f9081526010602052604090205490565b600b546001600160a01b03163314610ffd5760405162461bcd60e51b8152600401610a97906124fe565b6101f583106110645760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610a97565b8281146110c45760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610a97565b5f805b848110156110fd578383828181106110e1576110e161257d565b90506020020135826110f39190612591565b91506001016110c7565b508061110887610fb9565b10156111565760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610a97565b5f5b848110156111b2576111a9878787848181106111765761117661257d565b905060200201602081019061118b9190612406565b86868581811061119d5761119d61257d565b90506020020135611b3f565b50600101611158565b50505050505050565b600b546001600160a01b031633146111e55760405162461bcd60e51b8152600401610a97906124fe565b600b546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600b80546001600160a01b0319169055565b5f610ca5600b546001600160a01b031690565b600b546001600160a01b0316331461126b5760405162461bcd60e51b8152600401610a97906124fe565b605060085411156112be5760405162461bcd60e51b815260206004820152601b60248201527f53656c6c207461782063616e6e6f742062652061626f766520383000000000006044820152606401610a97565b600683905560078290556112d28383611c0f565b600855600a555050565b600b546001600160a01b031633146113065760405162461bcd60e51b8152600401610a97906124fe565b5f80546001600160a01b039081168252601260209081526040808420805460ff199081169091559483168085528185208054871660019081179091556014909352908420805490951690911790935560168054949091166001600160a01b03199485161790558054909216179055565b5f610c2c338484611657565b600b546001600160a01b031633146113ac5760405162461bcd60e51b8152600401610a97906124fe565b600a60085411156113ff5760405162461bcd60e51b815260206004820181905260248201527f5472616e73666572206665652063616e206e6f742062652061626f76652031306044820152606401610a97565b600955565b5f610a67611410610c62565b61144e61144760026114417f0000000000000000000000000000000000000000000000000000000000000000610fb9565b90611c1a565b8590611c1a565b90611c25565b600b546001600160a01b0316331461147e5760405162461bcd60e51b8152600401610a97906124fe565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b600b546001600160a01b031633146114d25760405162461bcd60e51b8152600401610a97906124fe565b601c548111156114e557601c54601d5550565b601d8190555b50565b600b546001600160a01b031633146115185760405162461bcd60e51b8152600401610a97906124fe565b6001600160a01b03811661157d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a97565b600b546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b031633146116025760405162461bcd60e51b8152600401610a97906124fe565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b5f818484111561164f5760405162461bcd60e51b8152600401610a979190612207565b505050900390565b601e545f9060ff16156116765761166f848484611b3f565b9050610c2c565b600b546001600160a01b038581169116148015906116a25750600b546001600160a01b03848116911614155b156116f05760195460ff166116f05760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610a97565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116908416145f81158261176057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614155b90506001600160a01b03851630148015906117895750600e546001600160a01b03868116911614155b80156117c757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156117e057505f546001600160a01b03868116911614155b80156117fa57506016546001600160a01b03868116911614155b156118ae575f61180986610fb9565b6001600160a01b0387165f9081526014602052604090205490915060ff166118ac576003546118388683612591565b11156118ac5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610a97565b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03161480156118f65750601954610100900460ff165b801561191a57506001600160a01b0385165f9081526015602052604090205460ff16155b156119c2576001600160a01b0385165f908152601a602052604090205442116119935760405162461bcd60e51b815260206004820152602560248201527f506c65617365207761697420666f7220316d696e206265747765656e2074776f604482015264206275797360d81b6064820152608401610a97565b6019546119a99062010000900460ff1642612591565b6001600160a01b0386165f908152601a60205260409020555b6001600160a01b0385165f9081526013602052604090205460ff166119eb576119eb8685611c30565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260109091529190912054611a3c91869061162c565b6001600160a01b0387165f90815260106020526040902055838115611a755760095415611a7057611a6d8786611c9c565b90505b611abd565b6001600160a01b0387165f9081526012602052604090205460ff1615611a9b5784611aa6565b611aa6878685611d39565b9050611ab0611de5565b15611abd57611abd611e4f565b6001600160a01b0386165f90815260106020526040902054611adf9082611c0f565b6001600160a01b038088165f8181526010602052604090819020939093559151908916905f8051602061266f83398151915290611b1f9085815260200190565b60405180910390a35060019695505050505050565b5f610c2c82846125a4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152601090915291822054611b8f91849061162c565b6001600160a01b038086165f908152601060205260408082209390935590851681522054611bbd9083611c0f565b6001600160a01b038085165f8181526010602052604090819020939093559151908616905f8051602061266f83398151915290611bfd9086815260200190565b60405180910390a35060019392505050565b5f610c2c8284612591565b5f610c2c8284612547565b5f610c2c828461255e565b60025481111580611c5857506001600160a01b0382165f9081526013602052604090205460ff165b611c985760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610a97565b5050565b5f8060095490505f611cc5600a546064611cb69190612547565b61144e60646114418887611c1a565b305f90815260106020526040902054909150611ce19082611c0f565b305f81815260106020526040908190209290925590516001600160a01b038716905f8051602061266f83398151915290611d1e9085815260200190565b60405180910390a3611d308482611b34565b95945050505050565b5f8082611d4857600554611d4c565b6008545b90505f611d70600a546064611d619190612547565b61144e60646114418987611c1a565b305f90815260106020526040902054909150611d8c9082611c0f565b305f81815260106020526040908190209290925590516001600160a01b038816905f8051602061266f83398151915290611dc99085815260200190565b60405180910390a3611ddb8582611b34565b9695505050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590611e225750601e5460ff16155b8015611e305750601b5460ff165b8015610ca5575050601c54305f90815260106020526040902054101590565b601e805460ff191660011790556017546018545f91611e6d91610ab3565b611e7957600654611e7b565b5f5b90505f611e9e600261144e60085461144e86601d54611c1a90919063ffffffff16565b90505f611eb682601d54611b3490919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110611eee57611eee61257d565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f8e91906125b7565b81600181518110611fa157611fa161257d565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b815247917f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906120059086905f908790309042906004016125d2565b5f604051808303815f87803b15801561201c575f80fd5b505af115801561202e573d5f803e3d5ffd5b505050505f6120468247611b3490919063ffffffff16565b90505f612060612057886002611c25565b60085490611b34565b90505f612081600261144e8461144e60065488611c1a90919063ffffffff16565b90505f61209d8361144e60075487611c1a90919063ffffffff16565b5f805460405192935090916001600160a01b039091169061753090849084818181858888f193505050503d805f81146120f1576040519150601f19603f3d011682016040523d82523d5f602084013e6120f6565b606091505b505f925050891590506121f15760165460405163f305d71960e01b8152306004820152602481018b90525f6044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990859060c40160606040518083038185885af115801561218f573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906121b49190612643565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601e805460ff191690555050505050505050565b5f602080835283518060208501525f5b8181101561223357858101830151858201604001528201612217565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114eb575f80fd5b5f8060408385031215612278575f80fd5b823561228381612253565b946020939093013593505050565b803580151581146122a0575f80fd5b919050565b5f602082840312156122b5575f80fd5b610c2c82612291565b5f80604083850312156122cf575f80fd5b50508035926020909101359150565b5f602082840312156122ee575f80fd5b5035919050565b5f805f60608486031215612307575f80fd5b833561231281612253565b9250602084013561232281612253565b929592945050506040919091013590565b5f8083601f840112612343575f80fd5b50813567ffffffffffffffff81111561235a575f80fd5b6020830191508360208260051b8501011115612374575f80fd5b9250929050565b5f805f806060858703121561238e575f80fd5b843561239981612253565b9350602085013567ffffffffffffffff8111156123b4575f80fd5b6123c087828801612333565b9598909750949560400135949350505050565b5f80604083850312156123e4575f80fd5b82356123ef81612253565b91506123fd60208401612291565b90509250929050565b5f60208284031215612416575f80fd5b8135610c2c81612253565b5f805f805f60608688031215612435575f80fd5b853561244081612253565b9450602086013567ffffffffffffffff8082111561245c575f80fd5b61246889838a01612333565b90965094506040880135915080821115612480575f80fd5b5061248d88828901612333565b969995985093965092949392505050565b5f805f606084860312156124b0575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156124d8575f80fd5b82356124e381612253565b915060208301356124f381612253565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a6757610a67612533565b5f8261257857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b80820180821115610a6757610a67612533565b81810381811115610a6757610a67612533565b5f602082840312156125c7575f80fd5b8151610c2c81612253565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156126225784516001600160a01b0316835293830193918301916001016125fd565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612655575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205f06d7bf100441bb7c3efdf20f3459f9181afb794d227ddeeb69dc021d6332da64736f6c63430008160033

Deployed Bytecode

0x608060405260043610610344575f3560e01c8063617fe0ed116101bd5780639b928c2f116100f2578063dd395c6311610092578063e632313c1161006d578063e632313c1461098b578063f2fde38b146109aa578063f84ba65d146109c9578063ffb54a99146109e8575f80fd5b8063dd395c6314610913578063dd62ed3e14610932578063e53c30b014610976575f80fd5b8063bc337182116100cd578063bc33718214610672578063ca33e64c146108b6578063cf703bb9146108d5578063d51ed1c8146108f4575f80fd5b80639b928c2f14610859578063a4b45c0014610878578063a9059cbb14610897575f80fd5b8063722b62ad1161015d5780637d1db4a5116101385780637d1db4a5146107dd578063893d20e8146107f25780638da5cb5b1461080657806395d89b4114610823575f80fd5b8063722b62ad1461078b57806375f0a874146107aa57806378109e54146107c8575f80fd5b80636ddd1713116101985780636ddd17131461072057806370a0823114610739578063713e4ae514610758578063715018a614610777575f80fd5b8063617fe0ed146106b0578063658d4b7f146106ce57806367ac77b4146106ed575f80fd5b80632b112e4911610293578063470624021161023357806350db71fb1161020e57806350db71fb14610634578063571ac8b0146106535780635c85974f146106725780635d0044ca14610691575f80fd5b806347062402146105b557806349bd5a5e146105ca5780634dd0e4d314610615575f80fd5b80633705b3921161026e5780633705b3921461054d578063442a583d1461056257806344a33fd21461058157806346e421a2146105a0575f80fd5b80632b112e49146105035780632e8fa82114610517578063313ce5671461052c575f80fd5b8063180b0d7e116102fe5780631e25dc54116102d95780631e25dc5414610491578063201e7991146104a657806323b872dd146104c557806329e04b4a146104e4575f80fd5b8063180b0d7e1461044957806318160ddd1461045e5780631da1db5e14610472575f80fd5b8063026f7d151461034f5780630445b6671461037757806306fdde031461038c578063095ea7b3146103da5780630d295980146104095780631161ae391461042a575f80fd5b3661034b57005b5f80fd5b34801561035a575f80fd5b5061036460075481565b6040519081526020015b60405180910390f35b348015610382575f80fd5b50610364601c5481565b348015610397575f80fd5b5060408051808201909152601a81527f4861727279506f747465724f62616d61536d757266315065706500000000000060208201525b60405161036e9190612207565b3480156103e5575f80fd5b506103f96103f4366004612267565b610a01565b604051901515815260200161036e565b348015610414575f80fd5b506104286104233660046122a5565b610a6d565b005b348015610435575f80fd5b506103f96104443660046122be565b610ab3565b348015610454575f80fd5b50610364600a5481565b348015610469575f80fd5b50600154610364565b34801561047d575f80fd5b5061042861048c3660046122de565b610ac6565b34801561049c575f80fd5b5061036460095481565b3480156104b1575f80fd5b506104286104c03660046122be565b610b40565b3480156104d0575f80fd5b506103f96104df3660046122f5565b610b75565b3480156104ef575f80fd5b506104286104fe3660046122de565b610c33565b34801561050e575f80fd5b50610364610c62565b348015610522575f80fd5b50610364601d5481565b348015610537575f80fd5b5060095b60405160ff909116815260200161036e565b348015610558575f80fd5b5061036460055481565b34801561056d575f80fd5b5061042861057c36600461237b565b610caa565b34801561058c575f80fd5b5061042861059b3660046122de565b610dec565b3480156105ab575f80fd5b5061036460065481565b3480156105c0575f80fd5b5061036460045481565b3480156105d5575f80fd5b506105fd7f0000000000000000000000002b402e766208cf970b1eedd957eed6e1e6a25ca081565b6040516001600160a01b03909116815260200161036e565b348015610620575f80fd5b5061042861062f3660046122de565b610e27565b34801561063f575f80fd5b5061042861064e3660046123d3565b610ea7565b34801561065e575f80fd5b506103f961066d366004612406565b610efb565b34801561067d575f80fd5b5061042861068c3660046122de565b610f07565b34801561069c575f80fd5b506104286106ab3660046122de565b610f36565b3480156106bb575f80fd5b506019546103f990610100900460ff1681565b3480156106d9575f80fd5b506104286106e83660046123d3565b610f65565b3480156106f8575f80fd5b506105fd7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561072b575f80fd5b50601b546103f99060ff1681565b348015610744575f80fd5b50610364610753366004612406565b610fb9565b348015610763575f80fd5b50610428610772366004612421565b610fd3565b348015610782575f80fd5b506104286111bb565b348015610796575f80fd5b5060195461053b9062010000900460ff1681565b3480156107b5575f80fd5b505f546105fd906001600160a01b031681565b3480156107d3575f80fd5b5061036460035481565b3480156107e8575f80fd5b5061036460025481565b3480156107fd575f80fd5b506105fd61122e565b348015610811575f80fd5b50600b546001600160a01b03166105fd565b34801561082e575f80fd5b5060408051808201909152600e81526dd091d0b8d182d0bad0bed0b9d0bd60901b60208201526103cd565b348015610864575f80fd5b5061042861087336600461249e565b611241565b348015610883575f80fd5b506104286108923660046124c7565b6112dc565b3480156108a2575f80fd5b506103f96108b1366004612267565b611376565b3480156108c1575f80fd5b506016546105fd906001600160a01b031681565b3480156108e0575f80fd5b506104286108ef3660046122de565b611382565b3480156108ff575f80fd5b5061036461090e3660046122de565b611404565b34801561091e575f80fd5b5061042861092d3660046123d3565b611454565b34801561093d575f80fd5b5061036461094c3660046124c7565b6001600160a01b039182165f90815260116020908152604080832093909416825291909152205490565b348015610981575f80fd5b5061036460085481565b348015610996575f80fd5b506104286109a53660046122de565b6114a8565b3480156109b5575f80fd5b506104286109c4366004612406565b6114ee565b3480156109d4575f80fd5b506104286109e33660046123d3565b6115d8565b3480156109f3575f80fd5b506019546103f99060ff1681565b335f8181526011602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a5b9086815260200190565b60405180910390a35060015b92915050565b600b546001600160a01b03163314610aa05760405162461bcd60e51b8152600401610a97906124fe565b60405180910390fd5b6019805460ff1916911515919091179055565b5f82610abe83611404565b119392505050565b600b546001600160a01b03163314610af05760405162461bcd60e51b8152600401610a97906124fe565b5f5447906001600160a01b03166108fc6064610b0c8585612547565b610b16919061255e565b6040518115909202915f818181858888f19350505050158015610b3b573d5f803e3d5ffd5b505050565b600b546001600160a01b03163314610b6a5760405162461bcd60e51b8152600401610a97906124fe565b601791909155601855565b6001600160a01b0383165f9081526011602090815260408083203384529091528120545f1914610c1e576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152601182528381203382529091529190912054610bfa91849061162c565b6001600160a01b0385165f9081526011602090815260408083203384529091529020555b610c29848484611657565b90505b9392505050565b600b546001600160a01b03163314610c5d5760405162461bcd60e51b8152600401610a97906124fe565b601c55565b600f545f90610ca590610c7d906001600160a01b0316610fb9565b600e54610c9f90610c96906001600160a01b0316610fb9565b60015490611b34565b90611b34565b905090565b600b546001600160a01b03163314610cd45760405162461bcd60e51b8152600401610a97906124fe565b6103218210610d3b5760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3830302061646472657373657360981b6064820152608401610a97565b5f610d468383612547565b905080610d5286610fb9565b1015610da05760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610a97565b5f5b83811015610de457610ddb86868684818110610dc057610dc061257d565b9050602002016020810190610dd59190612406565b85611b3f565b50600101610da2565b505050505050565b600b546001600160a01b03163314610e165760405162461bcd60e51b8152600401610a97906124fe565b47336108fc6064610b0c8585612547565b600b546001600160a01b03163314610e515760405162461bcd60e51b8152600401610a97906124fe565b6050811115610ea25760405162461bcd60e51b815260206004820152601a60248201527f427579207461782063616e6e6f742062652061626f76652038300000000000006044820152606401610a97565b600555565b600b546001600160a01b03163314610ed15760405162461bcd60e51b8152600401610a97906124fe565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b5f610a67825f19610a01565b600b546001600160a01b03163314610f315760405162461bcd60e51b8152600401610a97906124fe565b600255565b600b546001600160a01b03163314610f605760405162461bcd60e51b8152600401610a97906124fe565b600355565b600b546001600160a01b03163314610f8f5760405162461bcd60e51b8152600401610a97906124fe565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6001600160a01b03165f9081526010602052604090205490565b600b546001600160a01b03163314610ffd5760405162461bcd60e51b8152600401610a97906124fe565b6101f583106110645760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610a97565b8281146110c45760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610a97565b5f805b848110156110fd578383828181106110e1576110e161257d565b90506020020135826110f39190612591565b91506001016110c7565b508061110887610fb9565b10156111565760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610a97565b5f5b848110156111b2576111a9878787848181106111765761117661257d565b905060200201602081019061118b9190612406565b86868581811061119d5761119d61257d565b90506020020135611b3f565b50600101611158565b50505050505050565b600b546001600160a01b031633146111e55760405162461bcd60e51b8152600401610a97906124fe565b600b546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600b80546001600160a01b0319169055565b5f610ca5600b546001600160a01b031690565b600b546001600160a01b0316331461126b5760405162461bcd60e51b8152600401610a97906124fe565b605060085411156112be5760405162461bcd60e51b815260206004820152601b60248201527f53656c6c207461782063616e6e6f742062652061626f766520383000000000006044820152606401610a97565b600683905560078290556112d28383611c0f565b600855600a555050565b600b546001600160a01b031633146113065760405162461bcd60e51b8152600401610a97906124fe565b5f80546001600160a01b039081168252601260209081526040808420805460ff199081169091559483168085528185208054871660019081179091556014909352908420805490951690911790935560168054949091166001600160a01b03199485161790558054909216179055565b5f610c2c338484611657565b600b546001600160a01b031633146113ac5760405162461bcd60e51b8152600401610a97906124fe565b600a60085411156113ff5760405162461bcd60e51b815260206004820181905260248201527f5472616e73666572206665652063616e206e6f742062652061626f76652031306044820152606401610a97565b600955565b5f610a67611410610c62565b61144e61144760026114417f0000000000000000000000002b402e766208cf970b1eedd957eed6e1e6a25ca0610fb9565b90611c1a565b8590611c1a565b90611c25565b600b546001600160a01b0316331461147e5760405162461bcd60e51b8152600401610a97906124fe565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b600b546001600160a01b031633146114d25760405162461bcd60e51b8152600401610a97906124fe565b601c548111156114e557601c54601d5550565b601d8190555b50565b600b546001600160a01b031633146115185760405162461bcd60e51b8152600401610a97906124fe565b6001600160a01b03811661157d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a97565b600b546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b031633146116025760405162461bcd60e51b8152600401610a97906124fe565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b5f818484111561164f5760405162461bcd60e51b8152600401610a979190612207565b505050900390565b601e545f9060ff16156116765761166f848484611b3f565b9050610c2c565b600b546001600160a01b038581169116148015906116a25750600b546001600160a01b03848116911614155b156116f05760195460ff166116f05760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610a97565b7f0000000000000000000000002b402e766208cf970b1eedd957eed6e1e6a25ca06001600160a01b03908116908416145f81158261176057507f0000000000000000000000002b402e766208cf970b1eedd957eed6e1e6a25ca06001600160a01b0316866001600160a01b031614155b90506001600160a01b03851630148015906117895750600e546001600160a01b03868116911614155b80156117c757507f0000000000000000000000002b402e766208cf970b1eedd957eed6e1e6a25ca06001600160a01b0316856001600160a01b031614155b80156117e057505f546001600160a01b03868116911614155b80156117fa57506016546001600160a01b03868116911614155b156118ae575f61180986610fb9565b6001600160a01b0387165f9081526014602052604090205490915060ff166118ac576003546118388683612591565b11156118ac5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610a97565b505b7f0000000000000000000000002b402e766208cf970b1eedd957eed6e1e6a25ca06001600160a01b0316866001600160a01b03161480156118f65750601954610100900460ff165b801561191a57506001600160a01b0385165f9081526015602052604090205460ff16155b156119c2576001600160a01b0385165f908152601a602052604090205442116119935760405162461bcd60e51b815260206004820152602560248201527f506c65617365207761697420666f7220316d696e206265747765656e2074776f604482015264206275797360d81b6064820152608401610a97565b6019546119a99062010000900460ff1642612591565b6001600160a01b0386165f908152601a60205260409020555b6001600160a01b0385165f9081526013602052604090205460ff166119eb576119eb8685611c30565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260109091529190912054611a3c91869061162c565b6001600160a01b0387165f90815260106020526040902055838115611a755760095415611a7057611a6d8786611c9c565b90505b611abd565b6001600160a01b0387165f9081526012602052604090205460ff1615611a9b5784611aa6565b611aa6878685611d39565b9050611ab0611de5565b15611abd57611abd611e4f565b6001600160a01b0386165f90815260106020526040902054611adf9082611c0f565b6001600160a01b038088165f8181526010602052604090819020939093559151908916905f8051602061266f83398151915290611b1f9085815260200190565b60405180910390a35060019695505050505050565b5f610c2c82846125a4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152601090915291822054611b8f91849061162c565b6001600160a01b038086165f908152601060205260408082209390935590851681522054611bbd9083611c0f565b6001600160a01b038085165f8181526010602052604090819020939093559151908616905f8051602061266f83398151915290611bfd9086815260200190565b60405180910390a35060019392505050565b5f610c2c8284612591565b5f610c2c8284612547565b5f610c2c828461255e565b60025481111580611c5857506001600160a01b0382165f9081526013602052604090205460ff165b611c985760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610a97565b5050565b5f8060095490505f611cc5600a546064611cb69190612547565b61144e60646114418887611c1a565b305f90815260106020526040902054909150611ce19082611c0f565b305f81815260106020526040908190209290925590516001600160a01b038716905f8051602061266f83398151915290611d1e9085815260200190565b60405180910390a3611d308482611b34565b95945050505050565b5f8082611d4857600554611d4c565b6008545b90505f611d70600a546064611d619190612547565b61144e60646114418987611c1a565b305f90815260106020526040902054909150611d8c9082611c0f565b305f81815260106020526040908190209290925590516001600160a01b038816905f8051602061266f83398151915290611dc99085815260200190565b60405180910390a3611ddb8582611b34565b9695505050505050565b5f336001600160a01b037f0000000000000000000000002b402e766208cf970b1eedd957eed6e1e6a25ca01614801590611e225750601e5460ff16155b8015611e305750601b5460ff165b8015610ca5575050601c54305f90815260106020526040902054101590565b601e805460ff191660011790556017546018545f91611e6d91610ab3565b611e7957600654611e7b565b5f5b90505f611e9e600261144e60085461144e86601d54611c1a90919063ffffffff16565b90505f611eb682601d54611b3490919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110611eee57611eee61257d565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f8e91906125b7565b81600181518110611fa157611fa161257d565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b815247917f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906120059086905f908790309042906004016125d2565b5f604051808303815f87803b15801561201c575f80fd5b505af115801561202e573d5f803e3d5ffd5b505050505f6120468247611b3490919063ffffffff16565b90505f612060612057886002611c25565b60085490611b34565b90505f612081600261144e8461144e60065488611c1a90919063ffffffff16565b90505f61209d8361144e60075487611c1a90919063ffffffff16565b5f805460405192935090916001600160a01b039091169061753090849084818181858888f193505050503d805f81146120f1576040519150601f19603f3d011682016040523d82523d5f602084013e6120f6565b606091505b505f925050891590506121f15760165460405163f305d71960e01b8152306004820152602481018b90525f6044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990859060c40160606040518083038185885af115801561218f573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906121b49190612643565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601e805460ff191690555050505050505050565b5f602080835283518060208501525f5b8181101561223357858101830151858201604001528201612217565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114eb575f80fd5b5f8060408385031215612278575f80fd5b823561228381612253565b946020939093013593505050565b803580151581146122a0575f80fd5b919050565b5f602082840312156122b5575f80fd5b610c2c82612291565b5f80604083850312156122cf575f80fd5b50508035926020909101359150565b5f602082840312156122ee575f80fd5b5035919050565b5f805f60608486031215612307575f80fd5b833561231281612253565b9250602084013561232281612253565b929592945050506040919091013590565b5f8083601f840112612343575f80fd5b50813567ffffffffffffffff81111561235a575f80fd5b6020830191508360208260051b8501011115612374575f80fd5b9250929050565b5f805f806060858703121561238e575f80fd5b843561239981612253565b9350602085013567ffffffffffffffff8111156123b4575f80fd5b6123c087828801612333565b9598909750949560400135949350505050565b5f80604083850312156123e4575f80fd5b82356123ef81612253565b91506123fd60208401612291565b90509250929050565b5f60208284031215612416575f80fd5b8135610c2c81612253565b5f805f805f60608688031215612435575f80fd5b853561244081612253565b9450602086013567ffffffffffffffff8082111561245c575f80fd5b61246889838a01612333565b90965094506040880135915080821115612480575f80fd5b5061248d88828901612333565b969995985093965092949392505050565b5f805f606084860312156124b0575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156124d8575f80fd5b82356124e381612253565b915060208301356124f381612253565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a6757610a67612533565b5f8261257857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b80820180821115610a6757610a67612533565b81810381811115610a6757610a67612533565b5f602082840312156125c7575f80fd5b8151610c2c81612253565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156126225784516001600160a01b0316835293830193918301916001016125fd565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612655575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205f06d7bf100441bb7c3efdf20f3459f9181afb794d227ddeeb69dc021d6332da64736f6c63430008160033

Deployed Bytecode Sourcemap

12732:14381:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;710:38;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;710:38:0;;;;;;;;13722:50;;;;;;;;;;;;;;;;15332:80;;;;;;;;;;-1:-1:-1;15404:5:0;;;;;;;;;;;;;;;;;15332:80;;;;;;;:::i;15760:216::-;;;;;;;;;;-1:-1:-1;15760:216:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;15760:216:0;1205:187:1;21549:94:0;;;;;;;;;;-1:-1:-1;21549:94:0;;;;;:::i;:::-;;:::i;:::-;;25778:150;;;;;;;;;;-1:-1:-1;25778:150:0;;;;;:::i;:::-;;:::i;867:39::-;;;;;;;;;;;;;;;;15062:88;;;;;;;;;;-1:-1:-1;15135:12:0;;15062:88;;21080:214;;;;;;;;;;-1:-1:-1;21080:214:0;;;;;:::i;:::-;;:::i;823:37::-;;;;;;;;;;;;;;;;25252:184;;;;;;;;;;-1:-1:-1;25252:184:0;;;;;:::i;:::-;;:::i;16278:370::-;;;;;;;;;;-1:-1:-1;16278:370:0;;;;;:::i;:::-;;:::i;24903:112::-;;;;;;;;;;-1:-1:-1;24903:112:0;;;;;:::i;:::-;;:::i;25444:142::-;;;;;;;;;;;;;:::i;13779:46::-;;;;;;;;;;;;;;;;15156:80;;;;;;;;;;-1:-1:-1;389:1:0;15156:80;;;2818:4:1;2806:17;;;2788:36;;2776:2;2761:18;15156:80:0;2646:184:1;617:42:0;;;;;;;;;;;;;;;;26597:449;;;;;;;;;;-1:-1:-1;26597:449:0;;;;;:::i;:::-;;:::i;21302:216::-;;;;;;;;;;-1:-1:-1;21302:216:0;;;;;:::i;:::-;;:::i;666:37::-;;;;;;;;;;;;;;;;572:38;;;;;;;;;;;;;;;;13452;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4016:32:1;;;3998:51;;3986:2;3971:18;13452:38:0;3852:203:1;22217:156:0;;;;;;;;;;-1:-1:-1;22217:156:0;;;;;:::i;:::-;;:::i;24383:131::-;;;;;;;;;;-1:-1:-1;24383:131:0;;;;;:::i;:::-;;:::i;15984:122::-;;;;;;;;;;-1:-1:-1;15984:122:0;;;;;:::i;:::-;;:::i;16901:97::-;;;;;;;;;;-1:-1:-1;16901:97:0;;;;;:::i;:::-;;:::i;16656:122::-;;;;;;;;;;-1:-1:-1;16656:122:0;;;;;:::i;:::-;;:::i;13539:37::-;;;;;;;;;;-1:-1:-1;13539:37:0;;;;;;;;;;;23988:121;;;;;;;;;;-1:-1:-1;23988:121:0;;;;;:::i;:::-;;:::i;13395:50::-;;;;;;;;;;;;;;;13685:30;;;;;;;;;;-1:-1:-1;13685:30:0;;;;;;;;15504:105;;;;;;;;;;-1:-1:-1;15504:105:0;;;;;:::i;:::-;;:::i;25951:638::-;;;;;;;;;;-1:-1:-1;25951:638:0;;;;;:::i;:::-;;:::i;4271:148::-;;;;;;;;;;;;;:::i;13583:39::-;;;;;;;;;;-1:-1:-1;13583:39:0;;;;;;;;;;;142:75;;;;;;;;;;-1:-1:-1;142:75:0;;;;-1:-1:-1;;;;;142:75:0;;;512:53;;;;;;;;;;;;;;;;455:50;;;;;;;;;;;;;;;;15418:80;;;;;;;;;;;;;:::i;4057:79::-;;;;;;;;;;-1:-1:-1;4122:6:0;;-1:-1:-1;;;;;4122:6:0;4057:79;;15242:84;;;;;;;;;;-1:-1:-1;15316:7:0;;;;;;;;;;;;-1:-1:-1;;;15316:7:0;;;;15242:84;;21823:386;;;;;;;;;;-1:-1:-1;21823:386:0;;;;;:::i;:::-;;:::i;24522:373::-;;;;;;;;;;-1:-1:-1;24522:373:0;;;;;:::i;:::-;;:::i;16114:156::-;;;;;;;;;;-1:-1:-1;16114:156:0;;;;;:::i;:::-;;:::i;13266:36::-;;;;;;;;;;-1:-1:-1;13266:36:0;;;;-1:-1:-1;;;;;13266:36:0;;;21651:164;;;;;;;;;;-1:-1:-1;21651:164:0;;;;;:::i;:::-;;:::i;25594:176::-;;;;;;;;;;-1:-1:-1;25594:176:0;;;;;:::i;:::-;;:::i;24117:121::-;;;;;;;;;;-1:-1:-1;24117:121:0;;;;;:::i;:::-;;:::i;15615:133::-;;;;;;;;;;-1:-1:-1;15615:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;15717:19:0;;;15699:7;15717:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;15615:133;755:61;;;;;;;;;;;;;;;;25023:221;;;;;;;;;;-1:-1:-1;25023:221:0;;;;;:::i;:::-;;:::i;4427:244::-;;;;;;;;;;-1:-1:-1;4427:244:0;;;;;:::i;:::-;;:::i;24246:129::-;;;;;;;;;;-1:-1:-1;24246:129:0;;;;;:::i;:::-;;:::i;13499:31::-;;;;;;;;;;-1:-1:-1;13499:31:0;;;;;;;;15760:216;15864:10;15835:4;15852:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;15852:32:0;;;;;;;;;;:41;;;15909:37;15835:4;;15852:32;;15909:37;;;;15887:6;160:25:1;;148:2;133:18;;14:177;15909:37:0;;;;;;;;-1:-1:-1;15964:4:0;15760:216;;;;;:::o;21549:94::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;;;;;;;;;21614:11:::1;:21:::0;;-1:-1:-1;;21614:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21549:94::o;25778:150::-;25858:4;25914:6;25882:29;25902:8;25882:19;:29::i;:::-;:38;;25778:150;-1:-1:-1;;;25778:150:0:o;21080:214::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;21165:17:::1;21225:15:::0;21185:21:::1;::::0;-1:-1:-1;;;;;21225:15:0::1;21217:69;21282:3;21251:28;21263:16:::0;21185:21;21251:28:::1;:::i;:::-;:34;;;;:::i;:::-;21217:69;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21154:140;21080:214:::0;:::o;25252:184::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;25351:15:::1;:25:::0;;;;25387:26:::1;:41:::0;25252:184::o;16278:370::-;-1:-1:-1;;;;;16398:19:0;;16378:4;16398:19;;;:11;:19;;;;;;;;16418:10;16398:31;;;;;;;;-1:-1:-1;;16398:52:0;16395:186;;16500:69;;;;;;;;;;;-1:-1:-1;;;16500:69:0;;;;;;;;-1:-1:-1;;;;;16500:19:0;;-1:-1:-1;16500:19:0;;;:11;:19;;;;;16520:10;16500:31;;;;;;;;;;:69;;16536:6;;16500:35;:69::i;:::-;-1:-1:-1;;;;;16466:19:0;;;;;;:11;:19;;;;;;;;16486:10;16466:31;;;;;;;:103;16395:186;16600:40;16614:6;16622:9;16633:6;16600:13;:40::i;:::-;16593:47;;16278:370;;;;;;:::o;24903:112::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;24984:13:::1;:23:::0;24903:112::o;25444:142::-;25572:4;;25497:7;;25524:54;;25562:15;;-1:-1:-1;;;;;25572:4:0;25562:9;:15::i;:::-;25551:4;;25524:33;;25541:15;;-1:-1:-1;;;;;25551:4:0;25541:9;:15::i;:::-;25524:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;25517:61;;25444:142;:::o;26597:449::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;26738:3:::1;26719:22:::0;::::1;26711:79;;;::::0;-1:-1:-1;;;26711:79:0;;7584:2:1;26711:79:0::1;::::0;::::1;7566:21:1::0;7623:2;7603:18;;;7596:30;7662:34;7642:18;;;7635:62;-1:-1:-1;;;7713:18:1;;;7706:43;7766:19;;26711:79:0::1;7382:409:1::0;26711:79:0::1;26803:12;26818:25;26827:9:::0;26818:6;:25:::1;:::i;:::-;26803:40;;26883:4;26864:15;26874:4;26864:9;:15::i;:::-;:23;;26856:63;;;::::0;-1:-1:-1;;;26856:63:0;;7998:2:1;26856:63:0::1;::::0;::::1;7980:21:1::0;8037:2;8017:18;;;8010:30;8076:29;8056:18;;;8049:57;8123:18;;26856:63:0::1;7796:351:1::0;26856:63:0::1;26936:6;26932:107;26946:20:::0;;::::1;26932:107;;;26987:40;27002:4;27007:9;;27017:1;27007:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;27020:6;26987:14;:40::i;:::-;-1:-1:-1::0;26968:3:0::1;;26932:107;;;;26698:348;26597:449:::0;;;;:::o;21302:216::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;21414:21:::1;21454:10;21446:64;21506:3;21475:28;21487:16:::0;21414:21;21475:28:::1;:::i;22217:156::-:0;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;22301:2:::1;22291:6;:12;;22283:51;;;::::0;-1:-1:-1;;;22283:51:0;;8486:2:1;22283:51:0::1;::::0;::::1;8468:21:1::0;8525:2;8505:18;;;8498:30;8564:28;8544:18;;;8537:56;8610:18;;22283:51:0::1;8284:350:1::0;22283:51:0::1;22345:11;:20:::0;22217:156::o;24383:131::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24473:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;24473:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24383:131::o;15984:122::-;16039:4;16063:35;16071:7;-1:-1:-1;;16063:7:0;:35::i;16901:97::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;16969:12:::1;:21:::0;16901:97::o;16656:122::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;16736:15:::1;:34:::0;16656:122::o;23988:121::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24073:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;24073:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23988:121::o;15504:105::-;-1:-1:-1;;;;;15588:18:0;15570:7;15588:18;;;:9;:18;;;;;;;15504:105::o;25951:638::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;26104:3:::1;26085:22:::0;::::1;26077:79;;;::::0;-1:-1:-1;;;26077:79:0;;8841:2:1;26077:79:0::1;::::0;::::1;8823:21:1::0;8880:2;8860:18;;;8853:30;8919:34;8899:18;;;8892:62;-1:-1:-1;;;8970:18:1;;;8963:43;9023:19;;26077:79:0::1;8639:409:1::0;26077:79:0::1;26175:33:::0;;::::1;26167:85;;;::::0;-1:-1:-1;;;26167:85:0;;9255:2:1;26167:85:0::1;::::0;::::1;9237:21:1::0;9294:2;9274:18;;;9267:30;9333:34;9313:18;;;9306:62;-1:-1:-1;;;9384:18:1;;;9377:38;9432:19;;26167:85:0::1;9053:404:1::0;26167:85:0::1;26265:12;26298:6:::0;26294:90:::1;26308:20:::0;;::::1;26294:90;;;26363:6;;26370:1;26363:9;;;;;;;:::i;:::-;;;;;;;26356:4;:16;;;;:::i;:::-;26349:23:::0;-1:-1:-1;26330:3:0::1;;26294:90;;;;26423:4;26404:15;26414:4;26404:9;:15::i;:::-;:23;;26396:63;;;::::0;-1:-1:-1;;;26396:63:0;;7998:2:1;26396:63:0::1;::::0;::::1;7980:21:1::0;8037:2;8017:18;;;8010:30;8076:29;8056:18;;;8049:57;8123:18;;26396:63:0::1;7796:351:1::0;26396:63:0::1;26476:6;26472:110;26486:20:::0;;::::1;26472:110;;;26527:43;26542:4;26547:9;;26557:1;26547:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;26560:6;;26567:1;26560:9;;;;;;;:::i;:::-;;;;;;;26527:14;:43::i;:::-;-1:-1:-1::0;26508:3:0::1;;26472:110;;;;26064:525;25951:638:::0;;;;;:::o;4271:148::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;4362:6:::1;::::0;4341:40:::1;::::0;4378:1:::1;::::0;-1:-1:-1;;;;;4362:6:0::1;::::0;4341:40:::1;::::0;4378:1;;4341:40:::1;4392:6;:19:::0;;-1:-1:-1;;;;;;4392:19:0::1;::::0;;4271:148::o;15418:80::-;15470:7;15488;4122:6;;-1:-1:-1;;;;;4122:6:0;;4057:79;21823:386;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;21976:2:::1;21960:12;;:18;;21952:58;;;::::0;-1:-1:-1;;;21952:58:0;;9794:2:1;21952:58:0::1;::::0;::::1;9776:21:1::0;9833:2;9813:18;;;9806:30;9872:29;9852:18;;;9845:57;9919:18;;21952:58:0::1;9592:351:1::0;21952:58:0::1;22021:9;:25:::0;;;22057:13:::1;:36:::0;;;22119:39:::1;22033:13:::0;22073:20;22119:17:::1;:39::i;:::-;22104:12;:54:::0;22169:14:::1;:32:::0;-1:-1:-1;;21823:386:0:o;24522:373::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;24673:5:::1;24654:15:::0;;-1:-1:-1;;;;;24654:15:0;;::::1;24642:28:::0;;:11:::1;:28;::::0;;;;;;;:36;;-1:-1:-1;;24642:36:0;;::::1;::::0;;;24689:32;;::::1;::::0;;;;;;:39;;;::::1;24654:15:::0;24689:39;;::::1;::::0;;;24741:11:::1;:32:::0;;;;;;:39;;;;::::1;::::0;;::::1;::::0;;;24793:21:::1;:46:::0;;;;;::::1;-1:-1:-1::0;;;;;;24793:46:0;;::::1;;::::0;;24850:37;;;;::::1;;::::0;;24522:373::o;16114:156::-;16194:4;16218:44;16232:10;16244:9;16255:6;16218:13;:44::i;21651:164::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;21743:2:::1;21727:12;;:18;;21719:63;;;::::0;-1:-1:-1;;;21719:63:0;;10150:2:1;21719:63:0::1;::::0;::::1;10132:21:1::0;;;10169:18;;;10162:30;10228:34;10208:18;;;10201:62;10280:18;;21719:63:0::1;9948:356:1::0;21719:63:0::1;21793:8;:14:::0;21651:164::o;25594:176::-;25662:7;25689:73;25739:22;:20;:22::i;:::-;25689:45;25702:31;25731:1;25702:24;25712:13;25702:9;:24::i;:::-;:28;;:31::i;:::-;25689:8;;:12;:45::i;:::-;:49;;:73::i;24117:121::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24202:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;24202:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24117:121::o;25023:221::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;25108:13:::1;;25098:7;:23;25095:134;;;25151:13;::::0;25138:10:::1;:26:::0;25023:221;:::o;25095:134::-:1;25197:10;:20:::0;;;25095:134:::1;25023:221:::0;:::o;4427:244::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4516:22:0;::::1;4508:73;;;::::0;-1:-1:-1;;;4508:73:0;;10511:2:1;4508:73:0::1;::::0;::::1;10493:21:1::0;10550:2;10530:18;;;10523:30;10589:34;10569:18;;;10562:62;-1:-1:-1;;;10640:18:1;;;10633:36;10686:19;;4508:73:0::1;10309:402:1::0;4508:73:0::1;4618:6;::::0;4597:38:::1;::::0;-1:-1:-1;;;;;4597:38:0;;::::1;::::0;4618:6:::1;::::0;4597:38:::1;::::0;4618:6:::1;::::0;4597:38:::1;4646:6;:17:::0;;-1:-1:-1;;;;;;4646:17:0::1;-1:-1:-1::0;;;;;4646:17:0;;;::::1;::::0;;;::::1;::::0;;4427:244::o;24246:129::-;4184:6;;-1:-1:-1;;;;;4184:6:0;3386:10;4184:22;4176:67;;;;-1:-1:-1;;;4176:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24335:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;24335:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24246:129::o;1493:240::-;1613:7;1674:12;1666:6;;;;1658:29;;;;-1:-1:-1;;;1658:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1709:5:0;;;1493:240::o;17006:2340::-;17118:6;;17098:4;;17118:6;;17115:63;;;17134:41;17149:6;17157:9;17168:6;17134:14;:41::i;:::-;17127:48;;;;17115:63;4122:6;;-1:-1:-1;;;;;17193:17:0;;;4122:6;;17193:17;;;;:41;;-1:-1:-1;4122:6:0;;-1:-1:-1;;;;;17214:20:0;;;4122:6;;17214:20;;17193:41;17190:115;;;17258:11;;;;17250:43;;;;-1:-1:-1;;;17250:43:0;;10918:2:1;17250:43:0;;;10900:21:1;10957:2;10937:18;;;10930:30;-1:-1:-1;;;10976:18:1;;;10969:50;11036:18;;17250:43:0;10716:344:1;17250:43:0;17345:13;-1:-1:-1;;;;;17332:26:0;;;;;;;17317:11;17389:26;;17332;17389:53;;;17429:13;-1:-1:-1;;;;;17419:23:0;:6;-1:-1:-1;;;;;17419:23:0;;;17389:53;17370:73;-1:-1:-1;;;;;;17460:26:0;;17481:4;17460:26;;;;:70;;-1:-1:-1;17525:4:0;;-1:-1:-1;;;;;17504:26:0;;;17525:4;;17504:26;;17460:70;:114;;;;;17561:13;-1:-1:-1;;;;;17548:26:0;:9;-1:-1:-1;;;;;17548:26:0;;;17460:114;:160;;;;-1:-1:-1;17605:15:0;;-1:-1:-1;;;;;17592:28:0;;;17605:15;;17592:28;;17460:160;:212;;;;-1:-1:-1;17651:21:0;;-1:-1:-1;;;;;17638:34:0;;;17651:21;;17638:34;;17460:212;17456:486;;;17698:18;17719:20;17729:9;17719;:20::i;:::-;-1:-1:-1;;;;;17758:22:0;;;;;;:11;:22;;;;;;17698:41;;-1:-1:-1;17758:22:0;;17754:177;;17834:15;;17810:19;17823:6;17810:10;:19;:::i;:::-;17809:40;;17801:114;;;;-1:-1:-1;;;17801:114:0;;11267:2:1;17801:114:0;;;11249:21:1;11306:2;11286:18;;;11279:30;11345:34;11325:18;;;11318:62;11416:32;11396:18;;;11389:60;11466:19;;17801:114:0;11065:426:1;17801:114:0;17683:259;17456:486;17968:13;-1:-1:-1;;;;;17958:23:0;:6;-1:-1:-1;;;;;17958:23:0;;:58;;;;-1:-1:-1;17998:18:0;;;;;;;17958:58;:103;;;;-1:-1:-1;;;;;;18034:27:0;;;;;;:16;:27;;;;;;;;18033:28;17958:103;17954:317;;;-1:-1:-1;;;;;18095:24:0;;;;;;:13;:24;;;;;;18122:15;-1:-1:-1;18087:91:0;;;;-1:-1:-1;;;18087:91:0;;11698:2:1;18087:91:0;;;11680:21:1;11737:2;11717:18;;;11710:30;11776:34;11756:18;;;11749:62;-1:-1:-1;;;11827:18:1;;;11820:35;11872:19;;18087:91:0;11496:401:1;18087:91:0;18238:21;;18220:39;;18238:21;;;;;18220:15;:39;:::i;:::-;-1:-1:-1;;;;;18193:24:0;;;;;;:13;:24;;;;;:66;17954:317;-1:-1:-1;;;;;18493:26:0;;;;;;:15;:26;;;;;;;;18489:87;;18536:28;18549:6;18557;18536:12;:28::i;:::-;18635:53;;;;;;;;;;;-1:-1:-1;;;18635:53:0;;;;;;;;-1:-1:-1;;;;;18635:17:0;;-1:-1:-1;18635:17:0;;;:9;:17;;;;;;;;:53;;18657:6;;18635:21;:53::i;:::-;-1:-1:-1;;;;;18615:17:0;;;;;;:9;:17;;;;;:73;18726:6;18862:318;;;;18895:8;;:12;18892:100;;18945:31;18961:6;18969;18945:15;:31::i;:::-;18928:48;;18892:100;18862:318;;;-1:-1:-1;;;;;19953:19:0;;19928:4;19953:19;;;:11;:19;;;;;;;;19952:20;19041:64;;19099:6;19041:64;;;19065:31;19073:6;19081;19089;19065:7;:31::i;:::-;19024:81;;19137:16;:14;:16::i;:::-;19134:35;;;19156:10;:8;:10::i;:::-;-1:-1:-1;;;;;19215:20:0;;;;;;:9;:20;;;;;;:40;;19240:14;19215:24;:40::i;:::-;-1:-1:-1;;;;;19192:20:0;;;;;;;:9;:20;;;;;;;:63;;;;19273:43;;;;;;-1:-1:-1;;;;;;;;;;;19273:43:0;;;19301:14;160:25:1;;148:2;133:18;;14:177;19273:43:0;;;;;;;;-1:-1:-1;19334:4:0;;17006:2340;-1:-1:-1;;;;;;17006:2340:0:o;1069:98::-;1127:7;1154:5;1158:1;1154;:5;:::i;19354:330::-;19484:53;;;;;;;;;;;-1:-1:-1;;;19484:53:0;;;;;;;;-1:-1:-1;;;;;19484:17:0;;19447:4;19484:17;;;:9;:17;;;;;;;:53;;19506:6;;19484:21;:53::i;:::-;-1:-1:-1;;;;;19464:17:0;;;;;;;:9;:17;;;;;;:73;;;;19571:20;;;;;;;:32;;19596:6;19571:24;:32::i;:::-;-1:-1:-1;;;;;19548:20:0;;;;;;;:9;:20;;;;;;;:55;;;;19619:35;;;;;;-1:-1:-1;;;;;;;;;;;19619:35:0;;;19647:6;160:25:1;;148:2;133:18;;14:177;19619:35:0;;;;;;;;-1:-1:-1;19672:4:0;19354:330;;;;;:::o;963:98::-;1021:7;1048:5;1052:1;1048;:5;:::i;1175:98::-;1233:7;1260:5;1264:1;1260;:5;:::i;1281:98::-;1339:7;1366:5;1370:1;1366;:5;:::i;19692:166::-;19789:12;;19779:6;:22;;:49;;;-1:-1:-1;;;;;;19805:23:0;;;;;;:15;:23;;;;;;;;19779:49;19771:79;;;;-1:-1:-1;;;19771:79:0;;12237:2:1;19771:79:0;;;12219:21:1;12276:2;12256:18;;;12249:30;-1:-1:-1;;;12295:18:1;;;12288:47;12352:18;;19771:79:0;12035:341:1;19771:79:0;19692:166;;:::o;19988:406::-;20063:7;20085:17;20105:8;;20085:28;;20124:17;20144:56;20179:14;;20196:3;20179:20;;;;:::i;:::-;20144:30;20170:3;20144:21;:6;20155:9;20144:10;:21::i;:56::-;20266:4;20248:24;;;;:9;:24;;;;;;20124:76;;-1:-1:-1;20248:39:0;;20124:76;20248:28;:39::i;:::-;20239:4;20221:24;;;;:9;:24;;;;;;;:66;;;;20303:42;;-1:-1:-1;;;;;20303:42:0;;;-1:-1:-1;;;;;;;;;;;20303:42:0;;;20335:9;160:25:1;;148:2;133:18;;14:177;20303:42:0;;;;;;;;20365:21;:6;20376:9;20365:10;:21::i;:::-;20358:28;19988:406;-1:-1:-1;;;;;19988:406:0:o;20402:456::-;20482:7;20502:17;20542:6;:35;;20566:11;;20542:35;;;20551:12;;20542:35;20530:47;;20588:17;20608:56;20643:14;;20660:3;20643:20;;;;:::i;:::-;20608:30;20634:3;20608:21;:6;20619:9;20608:10;:21::i;:56::-;20730:4;20712:24;;;;:9;:24;;;;;;20588:76;;-1:-1:-1;20712:39:0;;20588:76;20712:28;:39::i;:::-;20703:4;20685:24;;;;:9;:24;;;;;;;:66;;;;20767:42;;-1:-1:-1;;;;;20767:42:0;;;-1:-1:-1;;;;;;;;;;;20767:42:0;;;20799:9;160:25:1;;148:2;133:18;;14:177;20767:42:0;;;;;;;;20829:21;:6;20840:9;20829:10;:21::i;:::-;20822:28;20402:456;-1:-1:-1;;;;;;20402:456:0:o;20866:206::-;20915:4;20939:10;-1:-1:-1;;;;;20953:13:0;20939:27;;;;;:47;;-1:-1:-1;20980:6:0;;;;20979:7;20939:47;:71;;;;-1:-1:-1;20999:11:0;;;;20939:71;:125;;;;-1:-1:-1;;21051:13:0;;21041:4;21023:24;;;;:9;:24;;;;;;:41;;;20866:206::o;22381:1599::-;13874:6;:13;;-1:-1:-1;;13874:13:0;13883:4;13874:13;;;22476:15:::1;::::0;22493:26:::1;::::0;13874:6;;22460:60:::1;::::0;:15:::1;:60::i;:::-;:76;;22527:9;;22460:76;;;22523:1;22460:76;22430:106;;22547:23;22573:60;22631:1;22573:53;22613:12;;22573:35;22588:19;22573:10;;:14;;:35;;;;:::i;:60::-;22547:86;;22644:20;22667:31;22682:15;22667:10;;:14;;:31;;;;:::i;:::-;22735:16;::::0;;22749:1:::1;22735:16:::0;;;;;::::1;::::0;;22644:54;;-1:-1:-1;22711:21:0::1;::::0;22735:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22735:16:0::1;22711:40;;22780:4;22762;22767:1;22762:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;22762:23:0::1;;;-1:-1:-1::0;;;;;22762:23:0::1;;;::::0;::::1;22806:14;-1:-1:-1::0;;;;;22806:19:0::1;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22796:4;22801:1;22796:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22796:31:0;;::::1;:7;::::0;;::::1;::::0;;;;;:31;22898:196:::1;::::0;-1:-1:-1;;;22898:196:0;;22864:21:::1;::::0;22898:14:::1;:65;::::0;::::1;::::0;:196:::1;::::0;22978:12;;22840:21:::1;::::0;23021:4;;23048::::1;::::0;23068:15:::1;::::0;22898:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23107:17;23127:40;23153:13;23127:21;:25;;:40;;;;:::i;:::-;23107:60:::0;-1:-1:-1;23180:19:0::1;23202:44;23219:26;:19:::0;23243:1:::1;23219:23;:26::i;:::-;23202:12;::::0;;:16:::1;:44::i;:::-;23180:66;;23259:26;23288:48;23334:1;23288:41;23317:11;23288:24;23302:9;;23288;:13;;:24;;;;:::i;:48::-;23259:77;;23347:26;23376:45;23409:11;23376:28;23390:13;;23376:9;:13;;:28;;;;:::i;:45::-;23435:15;23463::::0;;23455:72:::1;::::0;23347:74;;-1:-1:-1;23435:15:0;;-1:-1:-1;;;;;23463:15:0;;::::1;::::0;23517:5:::1;::::0;23347:74;;23435:15;23455:72;23435:15;23455:72;23347:74;23463:15;23517:5;23455:72:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;23585:5:0::1;::::0;-1:-1:-1;;23606:19:0;;;-1:-1:-1;23603:370:0::1;;23823:21;::::0;23641:252:::1;::::0;-1:-1:-1;;;23641:252:0;;23725:4:::1;23641:252;::::0;::::1;14305:34:1::0;14355:18;;;14348:34;;;-1:-1:-1;14398:18:1;;;14391:34;;;14441:18;;;14434:34;-1:-1:-1;;;;;23823:21:0;;::::1;14484:19:1::0;;;14477:44;23863:15:0::1;14537:19:1::0;;;14530:35;23641:14:0::1;:30:::0;;::::1;::::0;::::1;::::0;23679:18;;14239:19:1;;23641:252:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;23913:48:0::1;::::0;;15061:25:1;;;15117:2;15102:18;;15095:34;;;23913:48:0::1;::::0;-1:-1:-1;15034:18:1;23913:48:0::1;;;;;;;23603:370;-1:-1:-1::0;;13892:6:0;:14;;-1:-1:-1;;13892:14:0;;;-1:-1:-1;;;;;;;;22381:1599:0:o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:160::-;1462:20;;1518:13;;1511:21;1501:32;;1491:60;;1547:1;1544;1537:12;1491:60;1397:160;;;:::o;1562:180::-;1618:6;1671:2;1659:9;1650:7;1646:23;1642:32;1639:52;;;1687:1;1684;1677:12;1639:52;1710:26;1726:9;1710:26;:::i;1747:248::-;1815:6;1823;1876:2;1864:9;1855:7;1851:23;1847:32;1844:52;;;1892:1;1889;1882:12;1844:52;-1:-1:-1;;1915:23:1;;;1985:2;1970:18;;;1957:32;;-1:-1:-1;1747:248:1:o;2000:180::-;2059:6;2112:2;2100:9;2091:7;2087:23;2083:32;2080:52;;;2128:1;2125;2118:12;2080:52;-1:-1:-1;2151:23:1;;2000:180;-1:-1:-1;2000:180:1:o;2185:456::-;2262:6;2270;2278;2331:2;2319:9;2310:7;2306:23;2302:32;2299:52;;;2347:1;2344;2337:12;2299:52;2386:9;2373:23;2405:31;2430:5;2405:31;:::i;:::-;2455:5;-1:-1:-1;2512:2:1;2497:18;;2484:32;2525:33;2484:32;2525:33;:::i;:::-;2185:456;;2577:7;;-1:-1:-1;;;2631:2:1;2616:18;;;;2603:32;;2185:456::o;2835:367::-;2898:8;2908:6;2962:3;2955:4;2947:6;2943:17;2939:27;2929:55;;2980:1;2977;2970:12;2929:55;-1:-1:-1;3003:20:1;;3046:18;3035:30;;3032:50;;;3078:1;3075;3068:12;3032:50;3115:4;3107:6;3103:17;3091:29;;3175:3;3168:4;3158:6;3155:1;3151:14;3143:6;3139:27;3135:38;3132:47;3129:67;;;3192:1;3189;3182:12;3129:67;2835:367;;;;;:::o;3207:640::-;3311:6;3319;3327;3335;3388:2;3376:9;3367:7;3363:23;3359:32;3356:52;;;3404:1;3401;3394:12;3356:52;3443:9;3430:23;3462:31;3487:5;3462:31;:::i;:::-;3512:5;-1:-1:-1;3568:2:1;3553:18;;3540:32;3595:18;3584:30;;3581:50;;;3627:1;3624;3617:12;3581:50;3666:70;3728:7;3719:6;3708:9;3704:22;3666:70;:::i;:::-;3207:640;;3755:8;;-1:-1:-1;3640:96:1;;3837:2;3822:18;3809:32;;3207:640;-1:-1:-1;;;;3207:640:1:o;4060:315::-;4125:6;4133;4186:2;4174:9;4165:7;4161:23;4157:32;4154:52;;;4202:1;4199;4192:12;4154:52;4241:9;4228:23;4260:31;4285:5;4260:31;:::i;:::-;4310:5;-1:-1:-1;4334:35:1;4365:2;4350:18;;4334:35;:::i;:::-;4324:45;;4060:315;;;;;:::o;4380:247::-;4439:6;4492:2;4480:9;4471:7;4467:23;4463:32;4460:52;;;4508:1;4505;4498:12;4460:52;4547:9;4534:23;4566:31;4591:5;4566:31;:::i;4867:908::-;4998:6;5006;5014;5022;5030;5083:2;5071:9;5062:7;5058:23;5054:32;5051:52;;;5099:1;5096;5089:12;5051:52;5138:9;5125:23;5157:31;5182:5;5157:31;:::i;:::-;5207:5;-1:-1:-1;5263:2:1;5248:18;;5235:32;5286:18;5316:14;;;5313:34;;;5343:1;5340;5333:12;5313:34;5382:70;5444:7;5435:6;5424:9;5420:22;5382:70;:::i;:::-;5471:8;;-1:-1:-1;5356:96:1;-1:-1:-1;5559:2:1;5544:18;;5531:32;;-1:-1:-1;5575:16:1;;;5572:36;;;5604:1;5601;5594:12;5572:36;;5643:72;5707:7;5696:8;5685:9;5681:24;5643:72;:::i;:::-;4867:908;;;;-1:-1:-1;4867:908:1;;-1:-1:-1;5734:8:1;;5617:98;4867:908;-1:-1:-1;;;4867:908:1:o;5780:316::-;5857:6;5865;5873;5926:2;5914:9;5905:7;5901:23;5897:32;5894:52;;;5942:1;5939;5932:12;5894:52;-1:-1:-1;;5965:23:1;;;6035:2;6020:18;;6007:32;;-1:-1:-1;6086:2:1;6071:18;;;6058:32;;5780:316;-1:-1:-1;5780:316:1:o;6101:388::-;6169:6;6177;6230:2;6218:9;6209:7;6205:23;6201:32;6198:52;;;6246:1;6243;6236:12;6198:52;6285:9;6272:23;6304:31;6329:5;6304:31;:::i;:::-;6354:5;-1:-1:-1;6411:2:1;6396:18;;6383:32;6424:33;6383:32;6424:33;:::i;:::-;6476:7;6466:17;;;6101:388;;;;;:::o;6494:356::-;6696:2;6678:21;;;6715:18;;;6708:30;6774:34;6769:2;6754:18;;6747:62;6841:2;6826:18;;6494:356::o;6855:127::-;6916:10;6911:3;6907:20;6904:1;6897:31;6947:4;6944:1;6937:15;6971:4;6968:1;6961:15;6987:168;7060:9;;;7091;;7108:15;;;7102:22;;7088:37;7078:71;;7129:18;;:::i;7160:217::-;7200:1;7226;7216:132;;7270:10;7265:3;7261:20;7258:1;7251:31;7305:4;7302:1;7295:15;7333:4;7330:1;7323:15;7216:132;-1:-1:-1;7362:9:1;;7160:217::o;8152:127::-;8213:10;8208:3;8204:20;8201:1;8194:31;8244:4;8241:1;8234:15;8268:4;8265:1;8258:15;9462:125;9527:9;;;9548:10;;;9545:36;;;9561:18;;:::i;11902:128::-;11969:9;;;11990:11;;;11987:37;;;12004:18;;:::i;12513:251::-;12583:6;12636:2;12624:9;12615:7;12611:23;12607:32;12604:52;;;12652:1;12649;12642:12;12604:52;12684:9;12678:16;12703:31;12728:5;12703:31;:::i;12769:980::-;13031:4;13079:3;13068:9;13064:19;13110:6;13099:9;13092:25;13136:2;13174:6;13169:2;13158:9;13154:18;13147:34;13217:3;13212:2;13201:9;13197:18;13190:31;13241:6;13276;13270:13;13307:6;13299;13292:22;13345:3;13334:9;13330:19;13323:26;;13384:2;13376:6;13372:15;13358:29;;13405:1;13415:195;13429:6;13426:1;13423:13;13415:195;;;13494:13;;-1:-1:-1;;;;;13490:39:1;13478:52;;13585:15;;;;13550:12;;;;13526:1;13444:9;13415:195;;;-1:-1:-1;;;;;;;13666:32:1;;;;13661:2;13646:18;;13639:60;-1:-1:-1;;;13730:3:1;13715:19;13708:35;13627:3;12769:980;-1:-1:-1;;;12769:980:1:o;14576:306::-;14664:6;14672;14680;14733:2;14721:9;14712:7;14708:23;14704:32;14701:52;;;14749:1;14746;14739:12;14701:52;14778:9;14772:16;14762:26;;14828:2;14817:9;14813:18;14807:25;14797:35;;14872:2;14861:9;14857:18;14851:25;14841:35;;14576:306;;;;;:::o

Swarm Source

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