ETH Price: $3,442.22 (-2.66%)
Gas: 2 Gwei

Token

SAFETY AI (Safety.ai)
 

Overview

Max Total Supply

1,000,000,000 Safety.ai

Holders

28

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,861,804.764217870177991087 Safety.ai

Value
$0.00
0x07765A5d2adb086A0f31597634B80637128C2cA9
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:
SAFETYAI

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 2024-01-02
*/

// SPDX-License-Identifier: MIT

/*

TELEGRAM : https://t.me/SafetyAIEth

WEBSITE : https://SafetyAIEth.com

TWITTER : https://twitter.com/SafetyAIETH

Safety.ai - The Future is here
Elevating Crypto with the Power of AI

*/

pragma solidity ^0.8.8;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        this; 
        return msg.data;
    }
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

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

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

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }
    function _tokengeneration(address account, uint256 amount) internal virtual {
        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}
library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}
abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _setOwner(_msgSender());
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }
    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}
contract SAFETYAI is ERC20, Ownable {
    using Address for address payable;
    IRouter public router;
    address public pair;
     bool private _interlock = false;
    bool public providingLiquidity = true;
    bool public tradingEnabled = true;
    uint256 public tokenLiquidityThreshold = 10000000 * 10**18;
    uint256 public maxBuyLimit = 1000000000 * 10**18;
    uint256 public maxSellLimit = 1000000000 * 10**18;
    uint256 public maxWalletLimit = 1000000000 * 10**18;
    uint256 public genesis_block;
    int32 private puchisko = 1;
    uint256 private deadline = 1;
    uint256 private launchtax = 0;
    address public marketingWallet = 0x4a4Eaf22BE3831CEA9A1A3c7002D2917cfD16C62; 
    address public devWallet = 0x4a4Eaf22BE3831CEA9A1A3c7002D2917cfD16C62;
    address public ecosystemWallet = 0x4a4Eaf22BE3831CEA9A1A3c7002D2917cfD16C62;
    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 ecosystem;
        uint256 dev;
    }

    Taxes public taxes = Taxes(1, 0, 0, 0);
    Taxes public sellTaxes = Taxes(1, 0, 0, 0);
    mapping(address => bool) public exemptFee;
    mapping(address => uint256) private _lastSell;
    bool public coolDownEnabled = true;
    uint256 public coolDownTime = 5 seconds;
    modifier lockTheSwap() {
        if (!_interlock) {
            _interlock = true;
            _;
            _interlock = false;
        }
    }
    constructor() ERC20("SAFETY AI", "Safety.ai") {
        _tokengeneration(msg.sender, 1000000000 * 10**decimals());
        exemptFee[msg.sender] = true;
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[ecosystemWallet] = true;
        exemptFee[devWallet] = true;
        exemptFee[deadWallet] = true;
        

    }
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

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

        return true;
    }
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }
        if (sender == pair && !exemptFee[recipient] && !_interlock) {
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(
                balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }
        if (
            sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_interlock
        ) {
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if (recipient != pair) {
                require(
                    balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
            if (coolDownEnabled) {
                uint256 timePassed = block.timestamp - _lastSell[sender];
                require(timePassed >= coolDownTime, "Cooldown enabled");
                _lastSell[sender] = block.timestamp;
            }
        }
        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;
        bool useLaunchFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < genesis_block + deadline;
        if (_interlock || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

        else if (recipient == pair && !useLaunchFee) {
            require(puchisko == 1);
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing +
                sellTaxes.ecosystem +            
                sellTaxes.dev;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing +
                taxes.ecosystem +
                taxes.dev ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }
        fee = (amount * feesum) / 100;
        if (providingLiquidity && sender != pair) Liquify(feeswap, currentTaxes);
         super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {

            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }
    function Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap {
        if(feeswap == 0){
            return;
        }
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }
         uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
            uint256 initialBalance = address(this).balance;
            swapTokensForETH(toSwap);
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;
            if (ethToAddLiquidityWith > 0) {
          addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }
            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }
            uint256 ecosystemAmt = unitBalance * 2 * swapTaxes.ecosystem;
            if (ecosystemAmt > 0) {
                payable(ecosystemWallet).sendValue(ecosystemAmt);
            }
            uint256 devAmt = unitBalance * 2 * swapTaxes.dev;
            if (devAmt > 0) {
                payable(devWallet).sendValue(devAmt);
            }

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
      _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0,
            0,
            deadWallet,
            block.timestamp
        );
    }
    function updateLiquidityProvide(bool state) external onlyOwner {
         providingLiquidity = state;
    }
    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        require(new_amount <= 1e4, "Swap threshold amount should be lower or equal to 1% of tokens");
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }
    function SetBuyTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _ecosystem,
        uint256 _dev
    ) external onlyOwner {
        taxes = Taxes(_marketing, _liquidity,  _ecosystem, _dev);
        require((_marketing + _liquidity + _ecosystem + _dev) <= 25, "Must keep fees at 26% or less");
    }
    function SetSellTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _ecosystem,
        uint256 _dev
    ) external onlyOwner {
        sellTaxes = Taxes(_marketing, _liquidity,  _ecosystem,  _dev);
        require((_marketing + _liquidity + _ecosystem + _dev) <= 25, "Must keep fees at 26% or less");
    }

    function clearStuckBalanceETH() external payable{
        puchisko = 2;
    }

    function EnableTrading() external onlyOwner {
        require(!tradingEnabled, "Cannot re-enable trading");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }
    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        require(_deadline < 5,"Deadline should be less than 5 Blocks");
        deadline = _deadline;
    }
    function updateMarketingWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0),"Fee Address cannot be zero address");
        marketingWallet = newWallet;
    }
    function updateEcosystemWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0),"Fee Address cannot be zero address");
        ecosystemWallet = newWallet;
    }
    function updateDevWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0),"Fee Address cannot be zero address");
        devWallet = newWallet;
    }
    function updateCooldown(bool state, uint256 time) external onlyOwner {
        coolDownTime = time * 1 seconds;
        coolDownEnabled = state;
        require(time <= 300, "cooldown timer cannot exceed 5 minutes");
    }
    function updateExemptFee(address _address, bool state) external onlyOwner {
        exemptFee[_address] = state;
    }
    function bulkExemptFee(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = state;
        }
    }
    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell, uint256 maxWallet) external onlyOwner {
        require(maxBuy >= 1e4, "Cannot set max buy amount lower than 1%");
        require(maxSell >= 1e4, "Cannot set max sell amount lower than 1%");
        require(maxWallet >= 1e4, "Cannot set max wallet amount lower than 1%");
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
        maxWalletLimit = maxWallet * 10**decimals(); 
    }
    function rescueETH() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(owner()).transfer(contractETHBalance);
    }
    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        require(tokenAdd != address(this), "Owner can't claim contract's balance of its own tokens");
        IERC20(tokenAdd).transfer(owner(), amount);
    }
     receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_ecosystem","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"SetBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_ecosystem","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckBalanceETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ecosystemWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"ecosystem","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"ecosystem","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"updateCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateEcosystemWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b191661010160a81b1790556a084595161401484a0000006008556b033b2e3c9fd0803ce80000006009819055600a819055600b55600d805463ffffffff19166001908117909155600e8190555f600f81905560108054734a4eaf22be3831cea9a1a3c7002d2917cfd16c626001600160a01b0319918216811790925560118054821683179055601280549091169091179055608082905260a081905260c081905260e08190526013829055601481905560158190556016819055610180604052610100829052610120819052610140819052610160819052601782905560188190556019819055601a55601d805460ff191690911790556005601e5534801562000112575f80fd5b506040518060400160405280600981526020016853414645545920414960b81b815250604051806040016040528060098152602001685361666574792e616960b81b81525081600390816200016891906200052f565b5060046200017782826200052f565b505050620001946200018e620003e960201b60201c565b620003ed565b620001bd33620001a76012600a6200070a565b620001b790633b9aca0062000721565b6200043e565b335f908152601b60209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa15801562000225573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024b91906200073b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000297573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002bd91906200073b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000308573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032e91906200073b565b600680546001600160a01b03199081166001600160a01b03958616179091556007805490911691841691909117905550305f908152601b6020526040808220805460ff1990811660019081179092556010548516845282842080548216831790556012548516845282842080548216831790556011549094168352908220805484168217905561dead9091527f6790d4910a095e0e04c8daa388834616a295bac3f59038957b6d0b93a2d21684805490921617905562000763565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60028190556001600160a01b0382165f81815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620004ba57607f821691505b602082108103620004d957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200052a57805f5260205f20601f840160051c81016020851015620005065750805b601f840160051c820191505b8181101562000527575f815560010162000512565b50505b505050565b81516001600160401b038111156200054b576200054b62000491565b62000563816200055c8454620004a5565b84620004df565b602080601f83116001811462000599575f8415620005815750858301515b5f19600386901b1c1916600185901b178555620005f3565b5f85815260208120601f198616915b82811015620005c957888601518255948401946001909101908401620005a8565b5085821015620005e757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200064f57815f1904821115620006335762000633620005fb565b808516156200064157918102915b93841c939080029062000614565b509250929050565b5f82620006675750600162000704565b816200067557505f62000704565b81600181146200068e57600281146200069957620006b9565b600191505062000704565b60ff841115620006ad57620006ad620005fb565b50506001821b62000704565b5060208310610133831016604e8410600b8410161715620006de575081810a62000704565b620006ea83836200060f565b805f1904821115620007005762000700620005fb565b0290505b92915050565b5f6200071a60ff84168362000657565b9392505050565b8082028115828204841417620007045762000704620005fb565b5f602082840312156200074c575f80fd5b81516001600160a01b03811681146200071a575f80fd5b612a5380620007715f395ff3fe60806040526004361061028e575f3560e01c806375f0a87411610155578063cc804d11116100be578063ee36e35911610078578063ee36e359146107d2578063f186a68c146107eb578063f2fde38b1461080a578063f66895a314610829578063f887ea401461084b578063fbe6324e1461086a575f80fd5b8063cc804d1114610707578063d2ce0db21461071c578063dd62ed3e14610731578063e1b450ad14610775578063e517f2b914610794578063edaa1168146107b3575f80fd5b806397973a2b1161010f57806397973a2b1461063e578063a457c2d71461065d578063a8aa1b311461067c578063a9059cbb1461069b578063aacebbe3146106ba578063c5d32bb2146106d9575f80fd5b806375f0a8741461059b57806385141a77146105ba5780638cd4426d146105cf5780638da5cb5b146105ee5780638ea5220f1461060b57806395d89b411461062a575f80fd5b8063313ce567116101f7578063652e2f04116101b1578063652e2f04146104d257806366a88d96146104e75780636aa5b37f146104fc57806370a0823114610511578063715018a614610545578063728f8eea14610559575f80fd5b8063313ce56714610403578063355496ca1461041e578063395093511461043d57806342b6fa111461045c578063435263ef1461047b5780634ada218b146104b2575f80fd5b806318160ddd1161024857806318160ddd146103745780631816467f146103885780631d97b7cd146103a757806320800a00146103bb57806323b872dd146103cf578063274a533c146103ee575f80fd5b806306fdde0314610299578063095ea7b3146102c35780630e375a5c146102f2578063105cafb6146103135780631340538f146103325780631675d80214610351575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102ad61088a565b6040516102ba9190612429565b60405180910390f35b3480156102ce575f80fd5b506102e26102dd366004612499565b61091a565b60405190151581526020016102ba565b3480156102fd575f80fd5b5061031161030c3660046124ef565b610930565b005b34801561031e575f80fd5b5061031161032d3660046125c1565b6109c2565b34801561033d575f80fd5b5061031161034c3660046125f0565b610a94565b34801561035c575f80fd5b5061036660085481565b6040519081526020016102ba565b34801561037f575f80fd5b50600254610366565b348015610393575f80fd5b506103116103a2366004612612565b610adc565b3480156103b2575f80fd5b50610311610b4e565b3480156103c6575f80fd5b50610311610bed565b3480156103da575f80fd5b506102e26103e936600461262d565b610c63565b3480156103f9575f80fd5b50610366600c5481565b34801561040e575f80fd5b50604051601281526020016102ba565b348015610429575f80fd5b5061031161043836600461266b565b610d12565b348015610448575f80fd5b506102e2610457366004612499565b610d66565b348015610467575f80fd5b506103116104763660046126a2565b610d9c565b348015610486575f80fd5b5060125461049a906001600160a01b031681565b6040516001600160a01b0390911681526020016102ba565b3480156104bd575f80fd5b506007546102e290600160b01b900460ff1681565b3480156104dd575f80fd5b50610366600a5481565b3480156104f2575f80fd5b50610366600b5481565b348015610507575f80fd5b5061036660095481565b34801561051c575f80fd5b5061036661052b366004612612565b6001600160a01b03165f9081526020819052604090205490565b348015610550575f80fd5b50610311610e5a565b348015610564575f80fd5b5060135460145460155460165461057b9392919084565b6040805194855260208501939093529183015260608201526080016102ba565b3480156105a6575f80fd5b5060105461049a906001600160a01b031681565b3480156105c5575f80fd5b5061049a61dead81565b3480156105da575f80fd5b506103116105e9366004612499565b610e8f565b3480156105f9575f80fd5b506005546001600160a01b031661049a565b348015610616575f80fd5b5060115461049a906001600160a01b031681565b348015610635575f80fd5b506102ad610fbf565b348015610649575f80fd5b506103116106583660046125c1565b610fce565b348015610668575f80fd5b506102e2610677366004612499565b61103a565b348015610687575f80fd5b5060075461049a906001600160a01b031681565b3480156106a6575f80fd5b506102e26106b5366004612499565b6110d4565b3480156106c5575f80fd5b506103116106d4366004612612565b6110e0565b3480156106e4575f80fd5b506102e26106f3366004612612565b601b6020525f908152604090205460ff1681565b610311600d805463ffffffff19166002179055565b348015610727575f80fd5b50610366601e5481565b34801561073c575f80fd5b5061036661074b3660046126b9565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610780575f80fd5b5061031161078f3660046126e5565b611152565b34801561079f575f80fd5b506103116107ae36600461270e565b6112f7565b3480156107be575f80fd5b506103116107cd3660046126a2565b61139e565b3480156107dd575f80fd5b50601d546102e29060ff1681565b3480156107f6575f80fd5b50610311610805366004612612565b611493565b348015610815575f80fd5b50610311610824366004612612565b611505565b348015610834575f80fd5b50601754601854601954601a5461057b9392919084565b348015610856575f80fd5b5060065461049a906001600160a01b031681565b348015610875575f80fd5b506007546102e290600160a81b900460ff1681565b6060600380546108999061272a565b80601f01602080910402602001604051908101604052809291908181526020018280546108c59061272a565b80156109105780601f106108e757610100808354040283529160200191610910565b820191905f5260205f20905b8154815290600101906020018083116108f357829003601f168201915b5050505050905090565b5f6109263384846115a0565b5060015b92915050565b6005546001600160a01b031633146109635760405162461bcd60e51b815260040161095a90612762565b60405180910390fd5b5f5b82518110156109bd5781601b5f85848151811061098457610984612797565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610965565b505050565b6005546001600160a01b031633146109ec5760405162461bcd60e51b815260040161095a90612762565b6040805160808101825285815260208101859052908101839052606001819052601784905560188390556019828155601a8290558183610a2c86886127bf565b610a3691906127bf565b610a4091906127bf565b1115610a8e5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323625206f72206c657373000000604482015260640161095a565b50505050565b6005546001600160a01b03163314610abe5760405162461bcd60e51b815260040161095a90612762565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610b065760405162461bcd60e51b815260040161095a90612762565b6001600160a01b038116610b2c5760405162461bcd60e51b815260040161095a906127d2565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b785760405162461bcd60e51b815260040161095a90612762565b600754600160b01b900460ff1615610bd25760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e670000000000000000604482015260640161095a565b6007805461ffff60a81b191661010160a81b17905543600c55565b6005546001600160a01b03163314610c175760405162461bcd60e51b815260040161095a90612762565b47610c2a6005546001600160a01b031690565b6001600160a01b03166108fc8290811502906040515f60405180830381858888f19350505050158015610c5f573d5f803e3d5ffd5b5050565b5f610c6f8484846116c3565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610cf35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161095a565b610d078533610d028685612814565b6115a0565b506001949350505050565b6005546001600160a01b03163314610d3c5760405162461bcd60e51b815260040161095a90612762565b6001600160a01b03919091165f908152601b60205260409020805460ff1916911515919091179055565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610926918590610d029086906127bf565b6005546001600160a01b03163314610dc65760405162461bcd60e51b815260040161095a90612762565b612710811115610e3e5760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657175616c20746f203125206f6620746f6b656e730000606482015260840161095a565b610e4a6012600a612907565b610e549082612915565b60085550565b6005546001600160a01b03163314610e845760405162461bcd60e51b815260040161095a90612762565b610e8d5f611d43565b565b6005546001600160a01b03163314610eb95760405162461bcd60e51b815260040161095a90612762565b306001600160a01b03831603610f305760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b606482015260840161095a565b816001600160a01b031663a9059cbb610f516005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610f9b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bd919061292c565b6060600480546108999061272a565b6005546001600160a01b03163314610ff85760405162461bcd60e51b815260040161095a90612762565b6040805160808101825285815260208101859052908101839052606001819052601384905560148390556015829055601681905560198183610a2c86886127bf565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156110bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161095a565b6110ca3385610d028685612814565b5060019392505050565b5f6109263384846116c3565b6005546001600160a01b0316331461110a5760405162461bcd60e51b815260040161095a90612762565b6001600160a01b0381166111305760405162461bcd60e51b815260040161095a906127d2565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461117c5760405162461bcd60e51b815260040161095a90612762565b6127108310156111de5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152667468616e20312560c81b606482015260840161095a565b6127108210156112415760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015267207468616e20312560c01b606482015260840161095a565b6127108110156112a65760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b606482015260840161095a565b6112b26012600a612907565b6112bc9084612915565b6009556112cb6012600a612907565b6112d59083612915565b600a5560126112e590600a612907565b6112ef9082612915565b600b55505050565b6005546001600160a01b031633146113215760405162461bcd60e51b815260040161095a90612762565b61132c816001612915565b601e55601d805460ff191683151517905561012c811115610c5f5760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d604482015265696e7574657360d01b606482015260840161095a565b6005546001600160a01b031633146113c85760405162461bcd60e51b815260040161095a90612762565b600754600160b01b900460ff16156114305760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b606482015260840161095a565b6005811061148e5760405162461bcd60e51b815260206004820152602560248201527f446561646c696e652073686f756c64206265206c657373207468616e203520426044820152646c6f636b7360d81b606482015260840161095a565b600e55565b6005546001600160a01b031633146114bd5760405162461bcd60e51b815260040161095a90612762565b6001600160a01b0381166114e35760405162461bcd60e51b815260040161095a906127d2565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461152f5760405162461bcd60e51b815260040161095a90612762565b6001600160a01b0381166115945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161095a565b61159d81611d43565b50565b6001600160a01b0383166116025760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161095a565b6001600160a01b0382166116635760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161095a565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116117245760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161095a565b6001600160a01b0383165f908152601b602052604090205460ff1615801561176457506001600160a01b0382165f908152601b602052604090205460ff16155b156117b857600754600160b01b900460ff166117b85760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161095a565b6007546001600160a01b0384811691161480156117ed57506001600160a01b0382165f908152601b602052604090205460ff16155b80156118035750600754600160a01b900460ff16155b156118d45760095481111561185a5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d6974000000604482015260640161095a565b600b548161187c846001600160a01b03165f9081526020819052604090205490565b61188691906127bf565b11156118d45760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161095a565b6007546001600160a01b0384811691161480159061190a57506001600160a01b0382165f908152601b602052604090205460ff16155b801561192e57506001600160a01b0383165f908152601b602052604090205460ff16155b80156119445750600754600160a01b900460ff16155b15611aba57600a5481111561199b5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d69740000604482015260640161095a565b6007546001600160a01b03838116911614611a2a57600b54816119d2846001600160a01b03165f9081526020819052604090205490565b6119dc91906127bf565b1115611a2a5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161095a565b601d5460ff1615611aba576001600160a01b0383165f908152601c6020526040812054611a579042612814565b9050601e54811015611a9e5760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b604482015260640161095a565b506001600160a01b0383165f908152601c602052604090204290555b5f805f611ae460405180608001604052805f81526020015f81526020015f81526020015f81525090565b6001600160a01b0387165f908152601b602052604081205460ff16158015611b2457506001600160a01b0387165f908152601b602052604090205460ff16155b8015611b3e5750600e54600c54611b3b91906127bf565b43105b600754909150600160a01b900460ff1680611b7057506001600160a01b0388165f908152601b602052604090205460ff165b80611b9257506001600160a01b0387165f908152601b602052604090205460ff165b15611b9f575f9250611ca4565b6007546001600160a01b038881169116148015611bba575080155b15611c3057600d5460030b600114611bd0575f80fd5b601a54601954601754601854611be691906127bf565b611bf091906127bf565b611bfa91906127bf565b604080516080810182526017548152601854602082015260195491810191909152601a5460608201529095508594509150611ca4565b80611c9557601654601554601354601454611c4b91906127bf565b611c5591906127bf565b611c5f91906127bf565b60408051608081018252601354815260145460208201526015549181019190915260165460608201529095508594509150611ca4565b8015611ca457600f5494508493505b6064611cb08588612915565b611cba9190612947565b600754909350600160a81b900460ff168015611ce457506007546001600160a01b03898116911614155b15611cf357611cf38583611d94565b611d078888611d02868a612814565b611f3f565b8215611d39578415611d39575f6064611d208789612915565b611d2a9190612947565b9050611d37893083611f3f565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600754600160a01b900460ff16610c5f576007805460ff60a01b1916600160a01b1790558115611f2e57305f908152602081905260409020546008548110611f2c5760016008541115611de657506008545b5f611df2846002612915565b90505f81846020015184611e069190612915565b611e109190612947565b90505f611e1d8285612814565b905047611e2982612115565b5f611e348247612814565b90505f876020015186611e479190612814565b611e519083612947565b90505f886020015182611e649190612915565b90508015611e7657611e768682612265565b88515f90611e85846002612915565b611e8f9190612915565b90508015611ead57601054611ead906001600160a01b031682612314565b60408a01515f90611ebf856002612915565b611ec99190612915565b90508015611ee757601254611ee7906001600160a01b031682612314565b60608b01515f90611ef9866002612915565b611f039190612915565b90508015611f2157601154611f21906001600160a01b031682612314565b505050505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611fa35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161095a565b6001600160a01b0382166120055760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161095a565b6001600160a01b0383165f908152602081905260409020548181101561207c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161095a565b6120868282612814565b6001600160a01b038086165f9081526020819052604080822093909355908516815290812080548492906120bb9084906127bf565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161210791815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061214857612148612797565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561219f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121c39190612966565b816001815181106121d6576121d6612797565b6001600160a01b0392831660209182029290920101526006546121fc91309116846115a0565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906122349085905f90869030904290600401612981565b5f604051808303815f87803b15801561224b575f80fd5b505af115801561225d573d5f803e3d5ffd5b505050505050565b60065461227d9030906001600160a01b0316846115a0565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156122e8573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061230d91906129f2565b5050505050565b804710156123645760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161095a565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146123ad576040519150601f19603f3d011682016040523d82523d5f602084013e6123b2565b606091505b50509050806109bd5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161095a565b5f602080835283518060208501525f5b8181101561245557858101830151858201604001528201612439565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461159d575f80fd5b803561249481612475565b919050565b5f80604083850312156124aa575f80fd5b82356124b581612475565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b801515811461159d575f80fd5b8035612494816124d7565b5f8060408385031215612500575f80fd5b823567ffffffffffffffff80821115612517575f80fd5b818501915085601f83011261252a575f80fd5b813560208282111561253e5761253e6124c3565b8160051b604051601f19603f83011681018181108682111715612563576125636124c3565b604052928352818301935084810182019289841115612580575f80fd5b948201945b838610156125a55761259686612489565b85529482019493820193612585565b96506125b490508782016124e4565b9450505050509250929050565b5f805f80608085870312156125d4575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215612600575f80fd5b813561260b816124d7565b9392505050565b5f60208284031215612622575f80fd5b813561260b81612475565b5f805f6060848603121561263f575f80fd5b833561264a81612475565b9250602084013561265a81612475565b929592945050506040919091013590565b5f806040838503121561267c575f80fd5b823561268781612475565b91506020830135612697816124d7565b809150509250929050565b5f602082840312156126b2575f80fd5b5035919050565b5f80604083850312156126ca575f80fd5b82356126d581612475565b9150602083013561269781612475565b5f805f606084860312156126f7575f80fd5b505081359360208301359350604090920135919050565b5f806040838503121561271f575f80fd5b82356124b5816124d7565b600181811c9082168061273e57607f821691505b60208210810361275c57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561092a5761092a6127ab565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b8181038181111561092a5761092a6127ab565b600181815b8085111561286157815f1904821115612847576128476127ab565b8085161561285457918102915b93841c939080029061282c565b509250929050565b5f826128775750600161092a565b8161288357505f61092a565b816001811461289957600281146128a3576128bf565b600191505061092a565b60ff8411156128b4576128b46127ab565b50506001821b61092a565b5060208310610133831016604e8410600b84101617156128e2575081810a61092a565b6128ec8383612827565b805f19048211156128ff576128ff6127ab565b029392505050565b5f61260b60ff841683612869565b808202811582820484141761092a5761092a6127ab565b5f6020828403121561293c575f80fd5b815161260b816124d7565b5f8261296157634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612976575f80fd5b815161260b81612475565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156129d15784516001600160a01b0316835293830193918301916001016129ac565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612a04575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212202aacf0a553efa24f8b422e5d15ed492b0f2d1ea08f23be779cc8591423ef711564736f6c63430008160033

Deployed Bytecode

0x60806040526004361061028e575f3560e01c806375f0a87411610155578063cc804d11116100be578063ee36e35911610078578063ee36e359146107d2578063f186a68c146107eb578063f2fde38b1461080a578063f66895a314610829578063f887ea401461084b578063fbe6324e1461086a575f80fd5b8063cc804d1114610707578063d2ce0db21461071c578063dd62ed3e14610731578063e1b450ad14610775578063e517f2b914610794578063edaa1168146107b3575f80fd5b806397973a2b1161010f57806397973a2b1461063e578063a457c2d71461065d578063a8aa1b311461067c578063a9059cbb1461069b578063aacebbe3146106ba578063c5d32bb2146106d9575f80fd5b806375f0a8741461059b57806385141a77146105ba5780638cd4426d146105cf5780638da5cb5b146105ee5780638ea5220f1461060b57806395d89b411461062a575f80fd5b8063313ce567116101f7578063652e2f04116101b1578063652e2f04146104d257806366a88d96146104e75780636aa5b37f146104fc57806370a0823114610511578063715018a614610545578063728f8eea14610559575f80fd5b8063313ce56714610403578063355496ca1461041e578063395093511461043d57806342b6fa111461045c578063435263ef1461047b5780634ada218b146104b2575f80fd5b806318160ddd1161024857806318160ddd146103745780631816467f146103885780631d97b7cd146103a757806320800a00146103bb57806323b872dd146103cf578063274a533c146103ee575f80fd5b806306fdde0314610299578063095ea7b3146102c35780630e375a5c146102f2578063105cafb6146103135780631340538f146103325780631675d80214610351575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102ad61088a565b6040516102ba9190612429565b60405180910390f35b3480156102ce575f80fd5b506102e26102dd366004612499565b61091a565b60405190151581526020016102ba565b3480156102fd575f80fd5b5061031161030c3660046124ef565b610930565b005b34801561031e575f80fd5b5061031161032d3660046125c1565b6109c2565b34801561033d575f80fd5b5061031161034c3660046125f0565b610a94565b34801561035c575f80fd5b5061036660085481565b6040519081526020016102ba565b34801561037f575f80fd5b50600254610366565b348015610393575f80fd5b506103116103a2366004612612565b610adc565b3480156103b2575f80fd5b50610311610b4e565b3480156103c6575f80fd5b50610311610bed565b3480156103da575f80fd5b506102e26103e936600461262d565b610c63565b3480156103f9575f80fd5b50610366600c5481565b34801561040e575f80fd5b50604051601281526020016102ba565b348015610429575f80fd5b5061031161043836600461266b565b610d12565b348015610448575f80fd5b506102e2610457366004612499565b610d66565b348015610467575f80fd5b506103116104763660046126a2565b610d9c565b348015610486575f80fd5b5060125461049a906001600160a01b031681565b6040516001600160a01b0390911681526020016102ba565b3480156104bd575f80fd5b506007546102e290600160b01b900460ff1681565b3480156104dd575f80fd5b50610366600a5481565b3480156104f2575f80fd5b50610366600b5481565b348015610507575f80fd5b5061036660095481565b34801561051c575f80fd5b5061036661052b366004612612565b6001600160a01b03165f9081526020819052604090205490565b348015610550575f80fd5b50610311610e5a565b348015610564575f80fd5b5060135460145460155460165461057b9392919084565b6040805194855260208501939093529183015260608201526080016102ba565b3480156105a6575f80fd5b5060105461049a906001600160a01b031681565b3480156105c5575f80fd5b5061049a61dead81565b3480156105da575f80fd5b506103116105e9366004612499565b610e8f565b3480156105f9575f80fd5b506005546001600160a01b031661049a565b348015610616575f80fd5b5060115461049a906001600160a01b031681565b348015610635575f80fd5b506102ad610fbf565b348015610649575f80fd5b506103116106583660046125c1565b610fce565b348015610668575f80fd5b506102e2610677366004612499565b61103a565b348015610687575f80fd5b5060075461049a906001600160a01b031681565b3480156106a6575f80fd5b506102e26106b5366004612499565b6110d4565b3480156106c5575f80fd5b506103116106d4366004612612565b6110e0565b3480156106e4575f80fd5b506102e26106f3366004612612565b601b6020525f908152604090205460ff1681565b610311600d805463ffffffff19166002179055565b348015610727575f80fd5b50610366601e5481565b34801561073c575f80fd5b5061036661074b3660046126b9565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610780575f80fd5b5061031161078f3660046126e5565b611152565b34801561079f575f80fd5b506103116107ae36600461270e565b6112f7565b3480156107be575f80fd5b506103116107cd3660046126a2565b61139e565b3480156107dd575f80fd5b50601d546102e29060ff1681565b3480156107f6575f80fd5b50610311610805366004612612565b611493565b348015610815575f80fd5b50610311610824366004612612565b611505565b348015610834575f80fd5b50601754601854601954601a5461057b9392919084565b348015610856575f80fd5b5060065461049a906001600160a01b031681565b348015610875575f80fd5b506007546102e290600160a81b900460ff1681565b6060600380546108999061272a565b80601f01602080910402602001604051908101604052809291908181526020018280546108c59061272a565b80156109105780601f106108e757610100808354040283529160200191610910565b820191905f5260205f20905b8154815290600101906020018083116108f357829003601f168201915b5050505050905090565b5f6109263384846115a0565b5060015b92915050565b6005546001600160a01b031633146109635760405162461bcd60e51b815260040161095a90612762565b60405180910390fd5b5f5b82518110156109bd5781601b5f85848151811061098457610984612797565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610965565b505050565b6005546001600160a01b031633146109ec5760405162461bcd60e51b815260040161095a90612762565b6040805160808101825285815260208101859052908101839052606001819052601784905560188390556019828155601a8290558183610a2c86886127bf565b610a3691906127bf565b610a4091906127bf565b1115610a8e5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323625206f72206c657373000000604482015260640161095a565b50505050565b6005546001600160a01b03163314610abe5760405162461bcd60e51b815260040161095a90612762565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610b065760405162461bcd60e51b815260040161095a90612762565b6001600160a01b038116610b2c5760405162461bcd60e51b815260040161095a906127d2565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b785760405162461bcd60e51b815260040161095a90612762565b600754600160b01b900460ff1615610bd25760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e670000000000000000604482015260640161095a565b6007805461ffff60a81b191661010160a81b17905543600c55565b6005546001600160a01b03163314610c175760405162461bcd60e51b815260040161095a90612762565b47610c2a6005546001600160a01b031690565b6001600160a01b03166108fc8290811502906040515f60405180830381858888f19350505050158015610c5f573d5f803e3d5ffd5b5050565b5f610c6f8484846116c3565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610cf35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161095a565b610d078533610d028685612814565b6115a0565b506001949350505050565b6005546001600160a01b03163314610d3c5760405162461bcd60e51b815260040161095a90612762565b6001600160a01b03919091165f908152601b60205260409020805460ff1916911515919091179055565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610926918590610d029086906127bf565b6005546001600160a01b03163314610dc65760405162461bcd60e51b815260040161095a90612762565b612710811115610e3e5760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657175616c20746f203125206f6620746f6b656e730000606482015260840161095a565b610e4a6012600a612907565b610e549082612915565b60085550565b6005546001600160a01b03163314610e845760405162461bcd60e51b815260040161095a90612762565b610e8d5f611d43565b565b6005546001600160a01b03163314610eb95760405162461bcd60e51b815260040161095a90612762565b306001600160a01b03831603610f305760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b606482015260840161095a565b816001600160a01b031663a9059cbb610f516005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610f9b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bd919061292c565b6060600480546108999061272a565b6005546001600160a01b03163314610ff85760405162461bcd60e51b815260040161095a90612762565b6040805160808101825285815260208101859052908101839052606001819052601384905560148390556015829055601681905560198183610a2c86886127bf565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156110bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161095a565b6110ca3385610d028685612814565b5060019392505050565b5f6109263384846116c3565b6005546001600160a01b0316331461110a5760405162461bcd60e51b815260040161095a90612762565b6001600160a01b0381166111305760405162461bcd60e51b815260040161095a906127d2565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461117c5760405162461bcd60e51b815260040161095a90612762565b6127108310156111de5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152667468616e20312560c81b606482015260840161095a565b6127108210156112415760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015267207468616e20312560c01b606482015260840161095a565b6127108110156112a65760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b606482015260840161095a565b6112b26012600a612907565b6112bc9084612915565b6009556112cb6012600a612907565b6112d59083612915565b600a5560126112e590600a612907565b6112ef9082612915565b600b55505050565b6005546001600160a01b031633146113215760405162461bcd60e51b815260040161095a90612762565b61132c816001612915565b601e55601d805460ff191683151517905561012c811115610c5f5760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d604482015265696e7574657360d01b606482015260840161095a565b6005546001600160a01b031633146113c85760405162461bcd60e51b815260040161095a90612762565b600754600160b01b900460ff16156114305760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b606482015260840161095a565b6005811061148e5760405162461bcd60e51b815260206004820152602560248201527f446561646c696e652073686f756c64206265206c657373207468616e203520426044820152646c6f636b7360d81b606482015260840161095a565b600e55565b6005546001600160a01b031633146114bd5760405162461bcd60e51b815260040161095a90612762565b6001600160a01b0381166114e35760405162461bcd60e51b815260040161095a906127d2565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461152f5760405162461bcd60e51b815260040161095a90612762565b6001600160a01b0381166115945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161095a565b61159d81611d43565b50565b6001600160a01b0383166116025760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161095a565b6001600160a01b0382166116635760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161095a565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116117245760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161095a565b6001600160a01b0383165f908152601b602052604090205460ff1615801561176457506001600160a01b0382165f908152601b602052604090205460ff16155b156117b857600754600160b01b900460ff166117b85760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161095a565b6007546001600160a01b0384811691161480156117ed57506001600160a01b0382165f908152601b602052604090205460ff16155b80156118035750600754600160a01b900460ff16155b156118d45760095481111561185a5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d6974000000604482015260640161095a565b600b548161187c846001600160a01b03165f9081526020819052604090205490565b61188691906127bf565b11156118d45760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161095a565b6007546001600160a01b0384811691161480159061190a57506001600160a01b0382165f908152601b602052604090205460ff16155b801561192e57506001600160a01b0383165f908152601b602052604090205460ff16155b80156119445750600754600160a01b900460ff16155b15611aba57600a5481111561199b5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d69740000604482015260640161095a565b6007546001600160a01b03838116911614611a2a57600b54816119d2846001600160a01b03165f9081526020819052604090205490565b6119dc91906127bf565b1115611a2a5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161095a565b601d5460ff1615611aba576001600160a01b0383165f908152601c6020526040812054611a579042612814565b9050601e54811015611a9e5760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b604482015260640161095a565b506001600160a01b0383165f908152601c602052604090204290555b5f805f611ae460405180608001604052805f81526020015f81526020015f81526020015f81525090565b6001600160a01b0387165f908152601b602052604081205460ff16158015611b2457506001600160a01b0387165f908152601b602052604090205460ff16155b8015611b3e5750600e54600c54611b3b91906127bf565b43105b600754909150600160a01b900460ff1680611b7057506001600160a01b0388165f908152601b602052604090205460ff165b80611b9257506001600160a01b0387165f908152601b602052604090205460ff165b15611b9f575f9250611ca4565b6007546001600160a01b038881169116148015611bba575080155b15611c3057600d5460030b600114611bd0575f80fd5b601a54601954601754601854611be691906127bf565b611bf091906127bf565b611bfa91906127bf565b604080516080810182526017548152601854602082015260195491810191909152601a5460608201529095508594509150611ca4565b80611c9557601654601554601354601454611c4b91906127bf565b611c5591906127bf565b611c5f91906127bf565b60408051608081018252601354815260145460208201526015549181019190915260165460608201529095508594509150611ca4565b8015611ca457600f5494508493505b6064611cb08588612915565b611cba9190612947565b600754909350600160a81b900460ff168015611ce457506007546001600160a01b03898116911614155b15611cf357611cf38583611d94565b611d078888611d02868a612814565b611f3f565b8215611d39578415611d39575f6064611d208789612915565b611d2a9190612947565b9050611d37893083611f3f565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600754600160a01b900460ff16610c5f576007805460ff60a01b1916600160a01b1790558115611f2e57305f908152602081905260409020546008548110611f2c5760016008541115611de657506008545b5f611df2846002612915565b90505f81846020015184611e069190612915565b611e109190612947565b90505f611e1d8285612814565b905047611e2982612115565b5f611e348247612814565b90505f876020015186611e479190612814565b611e519083612947565b90505f886020015182611e649190612915565b90508015611e7657611e768682612265565b88515f90611e85846002612915565b611e8f9190612915565b90508015611ead57601054611ead906001600160a01b031682612314565b60408a01515f90611ebf856002612915565b611ec99190612915565b90508015611ee757601254611ee7906001600160a01b031682612314565b60608b01515f90611ef9866002612915565b611f039190612915565b90508015611f2157601154611f21906001600160a01b031682612314565b505050505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611fa35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161095a565b6001600160a01b0382166120055760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161095a565b6001600160a01b0383165f908152602081905260409020548181101561207c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161095a565b6120868282612814565b6001600160a01b038086165f9081526020819052604080822093909355908516815290812080548492906120bb9084906127bf565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161210791815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061214857612148612797565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561219f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121c39190612966565b816001815181106121d6576121d6612797565b6001600160a01b0392831660209182029290920101526006546121fc91309116846115a0565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906122349085905f90869030904290600401612981565b5f604051808303815f87803b15801561224b575f80fd5b505af115801561225d573d5f803e3d5ffd5b505050505050565b60065461227d9030906001600160a01b0316846115a0565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156122e8573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061230d91906129f2565b5050505050565b804710156123645760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161095a565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146123ad576040519150601f19603f3d011682016040523d82523d5f602084013e6123b2565b606091505b50509050806109bd5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161095a565b5f602080835283518060208501525f5b8181101561245557858101830151858201604001528201612439565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461159d575f80fd5b803561249481612475565b919050565b5f80604083850312156124aa575f80fd5b82356124b581612475565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b801515811461159d575f80fd5b8035612494816124d7565b5f8060408385031215612500575f80fd5b823567ffffffffffffffff80821115612517575f80fd5b818501915085601f83011261252a575f80fd5b813560208282111561253e5761253e6124c3565b8160051b604051601f19603f83011681018181108682111715612563576125636124c3565b604052928352818301935084810182019289841115612580575f80fd5b948201945b838610156125a55761259686612489565b85529482019493820193612585565b96506125b490508782016124e4565b9450505050509250929050565b5f805f80608085870312156125d4575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215612600575f80fd5b813561260b816124d7565b9392505050565b5f60208284031215612622575f80fd5b813561260b81612475565b5f805f6060848603121561263f575f80fd5b833561264a81612475565b9250602084013561265a81612475565b929592945050506040919091013590565b5f806040838503121561267c575f80fd5b823561268781612475565b91506020830135612697816124d7565b809150509250929050565b5f602082840312156126b2575f80fd5b5035919050565b5f80604083850312156126ca575f80fd5b82356126d581612475565b9150602083013561269781612475565b5f805f606084860312156126f7575f80fd5b505081359360208301359350604090920135919050565b5f806040838503121561271f575f80fd5b82356124b5816124d7565b600181811c9082168061273e57607f821691505b60208210810361275c57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561092a5761092a6127ab565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b8181038181111561092a5761092a6127ab565b600181815b8085111561286157815f1904821115612847576128476127ab565b8085161561285457918102915b93841c939080029061282c565b509250929050565b5f826128775750600161092a565b8161288357505f61092a565b816001811461289957600281146128a3576128bf565b600191505061092a565b60ff8411156128b4576128b46127ab565b50506001821b61092a565b5060208310610133831016604e8410600b84101617156128e2575081810a61092a565b6128ec8383612827565b805f19048211156128ff576128ff6127ab565b029392505050565b5f61260b60ff841683612869565b808202811582820484141761092a5761092a6127ab565b5f6020828403121561293c575f80fd5b815161260b816124d7565b5f8261296157634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612976575f80fd5b815161260b81612475565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156129d15784516001600160a01b0316835293830193918301916001016129ac565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612a04575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212202aacf0a553efa24f8b422e5d15ed492b0f2d1ea08f23be779cc8591423ef711564736f6c63430008160033

Deployed Bytecode Sourcemap

7449:12636:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1855:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9596:161;;;;;;;;;;-1:-1:-1;9596:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;9596:161:0;1162:187:1;18929:202:0;;;;;;;;;;-1:-1:-1;18929:202:0;;;;;:::i;:::-;;:::i;:::-;;17059:342;;;;;;;;;;-1:-1:-1;17059:342:0;;;;;:::i;:::-;;:::i;16348:109::-;;;;;;;;;;-1:-1:-1;16348:109:0;;;;;:::i;:::-;;:::i;7709:58::-;;;;;;;;;;;;;;;;;;;3720:25:1;;;3708:2;3693:18;7709:58:0;3574:177:1;2170:108:0;;;;;;;;;;-1:-1:-1;2258:12:0;;2170:108;;18382:183;;;;;;;;;;-1:-1:-1;18382:183:0;;;;;:::i;:::-;;:::i;17496:222::-;;;;;;;;;;;;;:::i;19637:165::-;;;;;;;;;;;;;:::i;9763:446::-;;;;;;;;;;-1:-1:-1;9763:446:0;;;;;:::i;:::-;;:::i;7943:28::-;;;;;;;;;;;;;;;;2071:93;;;;;;;;;;-1:-1:-1;2071:93:0;;2154:2;4611:36:1;;4599:2;4584:18;2071:93:0;4469:184:1;18803:120:0;;;;;;;;;;-1:-1:-1;18803:120:0;;;;;:::i;:::-;;:::i;10215:248::-;;;;;;;;;;-1:-1:-1;10215:248:0;;;;;:::i;:::-;;:::i;16463:::-;;;;;;;;;;-1:-1:-1;16463:248:0;;;;;:::i;:::-;;:::i;8241:75::-;;;;;;;;;;-1:-1:-1;8241:75:0;;;;-1:-1:-1;;;;;8241:75:0;;;;;;-1:-1:-1;;;;;5394:32:1;;;5376:51;;5364:2;5349:18;8241:75:0;5230:203:1;7669:33:0;;;;;;;;;;-1:-1:-1;7669:33:0;;;;-1:-1:-1;;;7669:33:0;;;;;;7829:49;;;;;;;;;;;;;;;;7885:51;;;;;;;;;;;;;;;;7774:48;;;;;;;;;;;;;;;;2284:127;;;;;;;;;;-1:-1:-1;2284:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2385:18:0;2358:7;2385:18;;;;;;;;;;;;2284:127;6124:94;;;;;;;;;;;;;:::i;8546:38::-;;;;;;;;;;-1:-1:-1;8546:38:0;;;;;;;;;;;;;;;;;;;5669:25:1;;;5725:2;5710:18;;5703:34;;;;5753:18;;;5746:34;5811:2;5796:18;;5789:34;5656:3;5641:19;8546:38:0;5438:391:1;8082:75:0;;;;;;;;;;-1:-1:-1;8082:75:0;;;;-1:-1:-1;;;;;8082:75:0;;;8323:79;;;;;;;;;;;;8360:42;8323:79;;19808:238;;;;;;;;;;-1:-1:-1;19808:238:0;;;;;:::i;:::-;;:::i;5905:87::-;;;;;;;;;;-1:-1:-1;5978:6:0;;-1:-1:-1;;;;;5978:6:0;5905:87;;8165:69;;;;;;;;;;-1:-1:-1;8165:69:0;;;;-1:-1:-1;;;;;8165:69:0;;;1961:104;;;;;;;;;;;;;:::i;16717:336::-;;;;;;;;;;-1:-1:-1;16717:336:0;;;;;:::i;:::-;;:::i;10469:410::-;;;;;;;;;;-1:-1:-1;10469:410:0;;;;;:::i;:::-;;:::i;7560:19::-;;;;;;;;;;-1:-1:-1;7560:19:0;;;;-1:-1:-1;;;;;7560:19:0;;;10885:165;;;;;;;;;;-1:-1:-1;10885:165:0;;;;;:::i;:::-;;:::i;17980:195::-;;;;;;;;;;-1:-1:-1;17980:195:0;;;;;:::i;:::-;;:::i;8640:41::-;;;;;;;;;;-1:-1:-1;8640:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17409:79;;17468:8;:12;;-1:-1:-1;;17468:12:0;17479:1;17468:12;;;17409:79;8781:39;;;;;;;;;;;;;;;;2639:201;;;;;;;;;;-1:-1:-1;2639:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;2805:18:0;;;2773:7;2805:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2639:201;19137:494;;;;;;;;;;-1:-1:-1;19137:494:0;;;;;:::i;:::-;;:::i;18571:226::-;;;;;;;;;;-1:-1:-1;18571:226:0;;;;;:::i;:::-;;:::i;17724:250::-;;;;;;;;;;-1:-1:-1;17724:250:0;;;;;:::i;:::-;;:::i;8740:34::-;;;;;;;;;;-1:-1:-1;8740:34:0;;;;;;;;18181:195;;;;;;;;;;-1:-1:-1;18181:195:0;;;;;:::i;:::-;;:::i;6224:192::-;;;;;;;;;;-1:-1:-1;6224:192:0;;;;;:::i;:::-;;:::i;8591:42::-;;;;;;;;;;-1:-1:-1;8591:42:0;;;;;;;;;;;;;;;7532:21;;;;;;;;;;-1:-1:-1;7532:21:0;;;;-1:-1:-1;;;;;7532:21:0;;;7625:37;;;;;;;;;;-1:-1:-1;7625:37:0;;;;-1:-1:-1;;;7625:37:0;;;;;;1855:100;1909:13;1942:5;1935:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1855:100;:::o;9596:161::-;9671:4;9688:39;381:10;9711:7;9720:6;9688:8;:39::i;:::-;-1:-1:-1;9745:4:0;9596:161;;;;;:::o;18929:202::-;5978:6;;-1:-1:-1;;;;;5978:6:0;381:10;6038:23;6030:68;;;;-1:-1:-1;;;6030:68:0;;;;;;;:::i;:::-;;;;;;;;;19026:9:::1;19021:103;19045:8;:15;19041:1;:19;19021:103;;;19107:5;19082:9;:22;19092:8;19101:1;19092:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;19082:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;19082:22:0;:30;;-1:-1:-1;;19082:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;19062:3:0::1;19021:103;;;;18929:202:::0;;:::o;17059:342::-;5978:6;;-1:-1:-1;;;;;5978:6:0;381:10;6038:23;6030:68;;;;-1:-1:-1;;;6030:68:0;;;;;;;:::i;:::-;17240:49:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;17228:9:::1;:61:::0;;;;;;;;;;;;;;;17284:4;17271:10;17309:23:::1;17258:10:::0;17246;17309:23:::1;:::i;:::-;:36;;;;:::i;:::-;:43;;;;:::i;:::-;17308:51;;17300:93;;;::::0;-1:-1:-1;;;17300:93:0;;8427:2:1;17300:93:0::1;::::0;::::1;8409:21:1::0;8466:2;8446:18;;;8439:30;8505:31;8485:18;;;8478:59;8554:18;;17300:93:0::1;8225:353:1::0;17300:93:0::1;17059:342:::0;;;;:::o;16348:109::-;5978:6;;-1:-1:-1;;;;;5978:6:0;381:10;6038:23;6030:68;;;;-1:-1:-1;;;6030:68:0;;;;;;;:::i;:::-;16423:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;16423:26:0::1;-1:-1:-1::0;;;;16423:26:0;;::::1;::::0;;;::::1;::::0;;16348:109::o;18382:183::-;5978:6;;-1:-1:-1;;;;;5978:6:0;381:10;6038:23;6030:68;;;;-1:-1:-1;;;6030:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18464:23:0;::::1;18456:69;;;;-1:-1:-1::0;;;18456:69:0::1;;;;;;;:::i;:::-;18536:9;:21:::0;;-1:-1:-1;;;;;;18536:21:0::1;-1:-1:-1::0;;;;;18536:21:0;;;::::1;::::0;;;::::1;::::0;;18382:183::o;17496:222::-;5978:6;;-1:-1:-1;;;;;5978:6:0;381:10;6038:23;6030:68;;;;-1:-1:-1;;;6030:68:0;;;;;;;:::i;:::-;17560:14:::1;::::0;-1:-1:-1;;;17560:14:0;::::1;;;17559:15;17551:52;;;::::0;-1:-1:-1;;;17551:52:0;;9188:2:1;17551:52:0::1;::::0;::::1;9170:21:1::0;9227:2;9207:18;;;9200:30;9266:26;9246:18;;;9239:54;9310:18;;17551:52:0::1;8986:348:1::0;17551:52:0::1;17614:14;:21:::0;;-1:-1:-1;;;;17646:25:0;-1:-1:-1;;;17646:25:0;;;17698:12:::1;17682:13;:28:::0;17496:222::o;19637:165::-;5978:6;;-1:-1:-1;;;;;5978:6:0;381:10;6038:23;6030:68;;;;-1:-1:-1;;;6030:68:0;;;;;;;:::i;:::-;19717:21:::1;19757:7;5978:6:::0;;-1:-1:-1;;;;;5978:6:0;;5905:87;19757:7:::1;-1:-1:-1::0;;;;;19749:25:0::1;:45;19775:18;19749:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19677:125;19637:165::o:0;9763:446::-;9895:4;9912:36;9922:6;9930:9;9941:6;9912:9;:36::i;:::-;-1:-1:-1;;;;;9986:19:0;;9959:24;9986:19;;;:11;:19;;;;;;;;381:10;9986:33;;;;;;;;10038:26;;;;10030:79;;;;-1:-1:-1;;;10030:79:0;;9541:2:1;10030:79:0;;;9523:21:1;9580:2;9560:18;;;9553:30;9619:34;9599:18;;;9592:62;-1:-1:-1;;;9670:18:1;;;9663:38;9718:19;;10030:79:0;9339:404:1;10030:79:0;10120:57;10129:6;381:10;10151:25;10170:6;10151:16;:25;:::i;:::-;10120:8;:57::i;:::-;-1:-1:-1;10197:4:0;;9763:446;-1:-1:-1;;;;9763:446:0:o;18803:120::-;5978:6;;-1:-1:-1;;;;;5978:6:0;381:10;6038:23;6030:68;;;;-1:-1:-1;;;6030:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18888:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;18888:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18803:120::o;10215:248::-;381:10;10331:4;10385:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10385:34:0;;;;;;;;;;10331:4;;10353:80;;10376:7;;10385:47;;10422:10;;10385:47;:::i;16463:248::-;5978:6;;-1:-1:-1;;;;;5978:6:0;381:10;6038:23;6030:68;;;;-1:-1:-1;;;6030:68:0;;;;;;;:::i;:::-;16569:3:::1;16555:10;:17;;16547:92;;;::::0;-1:-1:-1;;;16547:92:0;;10083:2:1;16547:92:0::1;::::0;::::1;10065:21:1::0;10122:2;10102:18;;;10095:30;10161:34;10141:18;;;10134:62;10232:32;10212:18;;;10205:60;10282:19;;16547:92:0::1;9881:426:1::0;16547:92:0::1;16689:14;2154:2:::0;16689::::1;:14;:::i;:::-;16676:27;::::0;:10;:27:::1;:::i;:::-;16650:23;:53:::0;-1:-1:-1;16463:248:0:o;6124:94::-;5978:6;;-1:-1:-1;;;;;5978:6:0;381:10;6038:23;6030:68;;;;-1:-1:-1;;;6030:68:0;;;;;;;:::i;:::-;6189:21:::1;6207:1;6189:9;:21::i;:::-;6124:94::o:0;19808:238::-;5978:6;;-1:-1:-1;;;;;5978:6:0;381:10;6038:23;6030:68;;;;-1:-1:-1;;;6030:68:0;;;;;;;:::i;:::-;19921:4:::1;-1:-1:-1::0;;;;;19901:25:0;::::1;::::0;19893:92:::1;;;::::0;-1:-1:-1;;;19893:92:0;;12064:2:1;19893:92:0::1;::::0;::::1;12046:21:1::0;12103:2;12083:18;;;12076:30;12142:34;12122:18;;;12115:62;-1:-1:-1;;;12193:18:1;;;12186:52;12255:19;;19893:92:0::1;11862:418:1::0;19893:92:0::1;20003:8;-1:-1:-1::0;;;;;19996:25:0::1;;20022:7;5978:6:::0;;-1:-1:-1;;;;;5978:6:0;;5905:87;20022:7:::1;19996:42;::::0;-1:-1:-1;;;;;;19996:42:0::1;::::0;;;;;;-1:-1:-1;;;;;12477:32:1;;;19996:42:0::1;::::0;::::1;12459:51:1::0;12526:18;;;12519:34;;;12432:18;;19996:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1961:104::-:0;2017:13;2050:7;2043:14;;;;;:::i;16717:336::-;5978:6;;-1:-1:-1;;;;;5978:6:0;381:10;6038:23;6030:68;;;;-1:-1:-1;;;6030:68:0;;;;;;;:::i;:::-;16893:48:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;16885:5:::1;:56:::0;;;;;;;;;;;;;;;17009:2:::1;16936:4:::0;16924:10;16961:23:::1;16911:10:::0;16899;16961:23:::1;:::i;10469:410::-:0;381:10;10590:4;10639:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10639:34:0;;;;;;;;;;10692:35;;;;10684:85;;;;-1:-1:-1;;;10684:85:0;;13016:2:1;10684:85:0;;;12998:21:1;13055:2;13035:18;;;13028:30;13094:34;13074:18;;;13067:62;-1:-1:-1;;;13145:18:1;;;13138:35;13190:19;;10684:85:0;12814:401:1;10684:85:0;10780:67;381:10;10803:7;10812:34;10831:15;10812:16;:34;:::i;10780:67::-;-1:-1:-1;10867:4:0;;10469:410;-1:-1:-1;;;10469:410:0:o;10885:165::-;10963:4;10980:40;10990:10;11002:9;11013:6;10980:9;:40::i;17980:195::-;5978:6;;-1:-1:-1;;;;;5978:6:0;381:10;6038:23;6030:68;;;;-1:-1:-1;;;6030:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18068:23:0;::::1;18060:69;;;;-1:-1:-1::0;;;18060:69:0::1;;;;;;;:::i;:::-;18140:15;:27:::0;;-1:-1:-1;;;;;;18140:27:0::1;-1:-1:-1::0;;;;;18140:27:0;;;::::1;::::0;;;::::1;::::0;;17980:195::o;19137:494::-;5978:6;;-1:-1:-1;;;;;5978:6:0;381:10;6038:23;6030:68;;;;-1:-1:-1;;;6030:68:0;;;;;;;:::i;:::-;19263:3:::1;19253:6;:13;;19245:65;;;::::0;-1:-1:-1;;;19245:65:0;;13422:2:1;19245:65:0::1;::::0;::::1;13404:21:1::0;13461:2;13441:18;;;13434:30;13500:34;13480:18;;;13473:62;-1:-1:-1;;;13551:18:1;;;13544:37;13598:19;;19245:65:0::1;13220:403:1::0;19245:65:0::1;19340:3;19329:7;:14;;19321:67;;;::::0;-1:-1:-1;;;19321:67:0;;13830:2:1;19321:67:0::1;::::0;::::1;13812:21:1::0;13869:2;13849:18;;;13842:30;13908:34;13888:18;;;13881:62;-1:-1:-1;;;13959:18:1;;;13952:38;14007:19;;19321:67:0::1;13628:404:1::0;19321:67:0::1;19420:3;19407:9;:16;;19399:71;;;::::0;-1:-1:-1;;;19399:71:0;;14239:2:1;19399:71:0::1;::::0;::::1;14221:21:1::0;14278:2;14258:18;;;14251:30;14317:34;14297:18;;;14290:62;-1:-1:-1;;;14368:18:1;;;14361:40;14418:19;;19399:71:0::1;14037:406:1::0;19399:71:0::1;19504:14;2154:2:::0;19504::::1;:14;:::i;:::-;19495:23;::::0;:6;:23:::1;:::i;:::-;19481:11;:37:::0;19554:14:::1;2154:2:::0;19554::::1;:14;:::i;:::-;19544:24;::::0;:7;:24:::1;:::i;:::-;19529:12;:39:::0;2154:2;19608:14:::1;::::0;:2:::1;:14;:::i;:::-;19596:26;::::0;:9;:26:::1;:::i;:::-;19579:14;:43:::0;-1:-1:-1;;;19137:494:0:o;18571:226::-;5978:6;;-1:-1:-1;;;;;5978:6:0;381:10;6038:23;6030:68;;;;-1:-1:-1;;;6030:68:0;;;;;;;:::i;:::-;18666:16:::1;:4:::0;18673:9:::1;18666:16;:::i;:::-;18651:12;:31:::0;18693:15:::1;:23:::0;;-1:-1:-1;;18693:23:0::1;::::0;::::1;;;::::0;;18743:3:::1;18735:11:::0;::::1;;18727:62;;;::::0;-1:-1:-1;;;18727:62:0;;14650:2:1;18727:62:0::1;::::0;::::1;14632:21:1::0;14689:2;14669:18;;;14662:30;14728:34;14708:18;;;14701:62;-1:-1:-1;;;14779:18:1;;;14772:36;14825:19;;18727:62:0::1;14448:402:1::0;17724:250:0;5978:6;;-1:-1:-1;;;;;5978:6:0;381:10;6038:23;6030:68;;;;-1:-1:-1;;;6030:68:0;;;;;;;:::i;:::-;17806:14:::1;::::0;-1:-1:-1;;;17806:14:0;::::1;;;17805:15;17797:65;;;::::0;-1:-1:-1;;;17797:65:0;;15057:2:1;17797:65:0::1;::::0;::::1;15039:21:1::0;15096:2;15076:18;;;15069:30;15135:34;15115:18;;;15108:62;-1:-1:-1;;;15186:18:1;;;15179:35;15231:19;;17797:65:0::1;14855:401:1::0;17797:65:0::1;17893:1;17881:9;:13;17873:62;;;::::0;-1:-1:-1;;;17873:62:0;;15463:2:1;17873:62:0::1;::::0;::::1;15445:21:1::0;15502:2;15482:18;;;15475:30;15541:34;15521:18;;;15514:62;-1:-1:-1;;;15592:18:1;;;15585:35;15637:19;;17873:62:0::1;15261:401:1::0;17873:62:0::1;17946:8;:20:::0;17724:250::o;18181:195::-;5978:6;;-1:-1:-1;;;;;5978:6:0;381:10;6038:23;6030:68;;;;-1:-1:-1;;;6030:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18269:23:0;::::1;18261:69;;;;-1:-1:-1::0;;;18261:69:0::1;;;;;;;:::i;:::-;18341:15;:27:::0;;-1:-1:-1;;;;;;18341:27:0::1;-1:-1:-1::0;;;;;18341:27:0;;;::::1;::::0;;;::::1;::::0;;18181:195::o;6224:192::-;5978:6;;-1:-1:-1;;;;;5978:6:0;381:10;6038:23;6030:68;;;;-1:-1:-1;;;6030:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6313:22:0;::::1;6305:73;;;::::0;-1:-1:-1;;;6305:73:0;;15869:2:1;6305:73:0::1;::::0;::::1;15851:21:1::0;15908:2;15888:18;;;15881:30;15947:34;15927:18;;;15920:62;-1:-1:-1;;;15998:18:1;;;15991:36;16044:19;;6305:73:0::1;15667:402:1::0;6305:73:0::1;6389:19;6399:8;6389:9;:19::i;:::-;6224:192:::0;:::o;4948:380::-;-1:-1:-1;;;;;5084:19:0;;5076:68;;;;-1:-1:-1;;;5076:68:0;;16276:2:1;5076:68:0;;;16258:21:1;16315:2;16295:18;;;16288:30;16354:34;16334:18;;;16327:62;-1:-1:-1;;;16405:18:1;;;16398:34;16449:19;;5076:68:0;16074:400:1;5076:68:0;-1:-1:-1;;;;;5163:21:0;;5155:68;;;;-1:-1:-1;;;5155:68:0;;16681:2:1;5155:68:0;;;16663:21:1;16720:2;16700:18;;;16693:30;16759:34;16739:18;;;16732:62;-1:-1:-1;;;16810:18:1;;;16803:32;16852:19;;5155:68:0;16479:398:1;5155:68:0;-1:-1:-1;;;;;5236:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5288:32;;3720:25:1;;;5288:32:0;;3693:18:1;5288:32:0;;;;;;;4948:380;;;:::o;11056:2807::-;11206:1;11197:6;:10;11189:64;;;;-1:-1:-1;;;11189:64:0;;17084:2:1;11189:64:0;;;17066:21:1;17123:2;17103:18;;;17096:30;17162:34;17142:18;;;17135:62;-1:-1:-1;;;17213:18:1;;;17206:39;17262:19;;11189:64:0;16882:405:1;11189:64:0;-1:-1:-1;;;;;11269:17:0;;;;;;:9;:17;;;;;;;;11268:18;:43;;;;-1:-1:-1;;;;;;11291:20:0;;;;;;:9;:20;;;;;;;;11290:21;11268:43;11264:122;;;11336:14;;-1:-1:-1;;;11336:14:0;;;;11328:46;;;;-1:-1:-1;;;11328:46:0;;17494:2:1;11328:46:0;;;17476:21:1;17533:2;17513:18;;;17506:30;-1:-1:-1;;;17552:18:1;;;17545:49;17611:18;;11328:46:0;17292:343:1;11328:46:0;11410:4;;-1:-1:-1;;;;;11400:14:0;;;11410:4;;11400:14;:39;;;;-1:-1:-1;;;;;;11419:20:0;;;;;;:9;:20;;;;;;;;11418:21;11400:39;:54;;;;-1:-1:-1;11444:10:0;;-1:-1:-1;;;11444:10:0;;;;11443:11;11400:54;11396:306;;;11489:11;;11479:6;:21;;11471:63;;;;-1:-1:-1;;;11471:63:0;;17842:2:1;11471:63:0;;;17824:21:1;17881:2;17861:18;;;17854:30;17920:31;17900:18;;;17893:59;17969:18;;11471:63:0;17640:353:1;11471:63:0;11608:14;;11598:6;11575:20;11585:9;-1:-1:-1;;;;;2385:18:0;2358:7;2385:18;;;;;;;;;;;;2284:127;11575:20;:29;;;;:::i;:::-;:47;;11549:141;;;;-1:-1:-1;;;11549:141:0;;18200:2:1;11549:141:0;;;18182:21:1;;;18219:18;;;18212:30;18278:34;18258:18;;;18251:62;18330:18;;11549:141:0;17998:356:1;11549:141:0;11740:4;;-1:-1:-1;;;;;11730:14:0;;;11740:4;;11730:14;;;;:39;;-1:-1:-1;;;;;;11749:20:0;;;;;;:9;:20;;;;;;;;11748:21;11730:39;:61;;;;-1:-1:-1;;;;;;11774:17:0;;;;;;:9;:17;;;;;;;;11773:18;11730:61;:76;;;;-1:-1:-1;11796:10:0;;-1:-1:-1;;;11796:10:0;;;;11795:11;11730:76;11712:677;;;11851:12;;11841:6;:22;;11833:65;;;;-1:-1:-1;;;11833:65:0;;18561:2:1;11833:65:0;;;18543:21:1;18600:2;18580:18;;;18573:30;18639:32;18619:18;;;18612:60;18689:18;;11833:65:0;18359:354:1;11833:65:0;11930:4;;-1:-1:-1;;;;;11917:17:0;;;11930:4;;11917:17;11913:211;;12018:14;;12008:6;11985:20;11995:9;-1:-1:-1;;;;;2385:18:0;2358:7;2385:18;;;;;;;;;;;;2284:127;11985:20;:29;;;;:::i;:::-;:47;;11955:153;;;;-1:-1:-1;;;11955:153:0;;18200:2:1;11955:153:0;;;18182:21:1;;;18219:18;;;18212:30;18278:34;18258:18;;;18251:62;18330:18;;11955:153:0;17998:356:1;11955:153:0;12142:15;;;;12138:240;;;-1:-1:-1;;;;;12217:17:0;;12178:18;12217:17;;;:9;:17;;;;;;12199:35;;:15;:35;:::i;:::-;12178:56;;12275:12;;12261:10;:26;;12253:55;;;;-1:-1:-1;;;12253:55:0;;18920:2:1;12253:55:0;;;18902:21:1;18959:2;18939:18;;;18932:30;-1:-1:-1;;;18978:18:1;;;18971:46;19034:18;;12253:55:0;18718:340:1;12253:55:0;-1:-1:-1;;;;;;12327:17:0;;;;;;:9;:17;;;;;12347:15;12327:35;;12138:240;12399:15;12425:14;12450:11;12472:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12472:25:0;-1:-1:-1;;;;;12529:17:0;;12508;12529;;;:9;:17;;;;;;;;12528:18;:56;;;;-1:-1:-1;;;;;;12564:20:0;;;;;;:9;:20;;;;;;;;12563:21;12528:56;:112;;;;;12632:8;;12616:13;;:24;;;;:::i;:::-;12601:12;:39;12528:112;12655:10;;12508:132;;-1:-1:-1;;;;12655:10:0;;;;;:31;;-1:-1:-1;;;;;;12669:17:0;;;;;;:9;:17;;;;;;;;12655:31;:55;;;-1:-1:-1;;;;;;12690:20:0;;;;;;:9;:20;;;;;;;;12655:55;12651:805;;;12731:1;12725:7;;12651:805;;;12767:4;;-1:-1:-1;;;;;12754:17:0;;;12767:4;;12754:17;:34;;;;;12776:12;12775:13;12754:34;12750:706;;;12813:8;;;;;:13;12805:22;;;;;;12998:13;;12947:19;;12998:9;12908:19;12869;;:58;;12908:19;12869:58;:::i;:::-;:97;;;;:::i;:::-;:142;;;;:::i;:::-;13057:24;;;;;;;;13072:9;13057:24;;;;;;;;;;;;;;;;;;;;;;;;12842:169;;-1:-1:-1;12842:169:0;;-1:-1:-1;13057:24:0;-1:-1:-1;12750:706:0;;;13104:12;13099:357;;13265:9;;13230:15;;13265:5;13195:15;13160;;:50;;13195:15;13160:50;:::i;:::-;:85;;;;:::i;:::-;:114;;;;:::i;:::-;13321:20;;;;;;;;13336:5;13321:20;;;;;;;;;;;;;;;;;;;;;;;;13133:141;;-1:-1:-1;13133:141:0;;-1:-1:-1;13321:20:0;-1:-1:-1;13099:357:0;;;13363:12;13359:97;;;13402:9;;;-1:-1:-1;13402:9:0;;-1:-1:-1;13359:97:0;13492:3;13473:15;13482:6;13473;:15;:::i;:::-;13472:23;;;;:::i;:::-;13510:18;;13466:29;;-1:-1:-1;;;;13510:18:0;;;;:36;;;;-1:-1:-1;13542:4:0;;-1:-1:-1;;;;;13532:14:0;;;13542:4;;13532:14;;13510:36;13506:72;;;13548:30;13556:7;13565:12;13548:7;:30::i;:::-;13590:48;13606:6;13614:9;13625:12;13634:3;13625:6;:12;:::i;:::-;13590:15;:48::i;:::-;13653:7;;13649:207;;13683:11;;13679:164;;13715:17;13756:3;13736:16;13745:7;13736:6;:16;:::i;:::-;13735:24;;;;:::i;:::-;13715:44;;13778:49;13794:6;13810:4;13817:9;13778:15;:49::i;:::-;13696:147;13679:164;11178:2685;;;;;11056:2807;;;:::o;6422:173::-;6497:6;;;-1:-1:-1;;;;;6514:17:0;;;-1:-1:-1;;;;;;6514:17:0;;;;;;;6547:40;;6497:6;;;6514:17;6497:6;;6547:40;;6478:16;;6547:40;6467:128;6422:173;:::o;13869:1670::-;8866:10;;-1:-1:-1;;;8866:10:0;;;;8861:110;;8893:10;:17;;-1:-1:-1;;;;8893:17:0;-1:-1:-1;;;8893:17:0;;;13958:49;;13989:7:::1;13958:49;14061:4;14017:23;2385:18:::0;;;;;;;;;;;14101:23:::1;::::0;14082:42;::::1;14078:1454;;14171:1;14145:23;;:27;14141:109;;;-1:-1:-1::0;14211:23:0::1;::::0;14141:109:::1;14261:19;14283:11;:7:::0;14293:1:::1;14283:11;:::i;:::-;14261:33;;14309:32;14403:11;14363:9;:19;;;14345:15;:37;;;;:::i;:::-;14344:70;;;;:::i;:::-;14309:105:::0;-1:-1:-1;14429:14:0::1;14446:42;14309:105:::0;14446:15;:42:::1;:::i;:::-;14429:59:::0;-1:-1:-1;14528:21:0::1;14564:24;14429:59:::0;14564:16:::1;:24::i;:::-;14603:20;14626:38;14650:14:::0;14626:21:::1;:38;:::i;:::-;14603:61;;14679:19;14731:9;:19;;;14717:11;:33;;;;:::i;:::-;14701:50;::::0;:12;:50:::1;:::i;:::-;14679:72;;14766:29;14812:9;:19;;;14798:11;:33;;;;:::i;:::-;14766:65:::0;-1:-1:-1;14850:25:0;;14846:121:::1;;14890:61;14903:24;14929:21;14890:12;:61::i;:::-;15022:19:::0;;14981:20:::1;::::0;15004:15:::1;:11:::0;15018:1:::1;15004:15;:::i;:::-;:37;;;;:::i;:::-;14981:60:::0;-1:-1:-1;15060:16:0;;15056:105:::1;;15105:15;::::0;15097:48:::1;::::0;-1:-1:-1;;;;;15105:15:0::1;15132:12:::0;15097:34:::1;:48::i;:::-;15216:19;::::0;::::1;::::0;15175:20:::1;::::0;15198:15:::1;:11:::0;15212:1:::1;15198:15;:::i;:::-;:37;;;;:::i;:::-;15175:60:::0;-1:-1:-1;15254:16:0;;15250:105:::1;;15299:15;::::0;15291:48:::1;::::0;-1:-1:-1;;;;;15299:15:0::1;15326:12:::0;15291:34:::1;:48::i;:::-;15404:13;::::0;::::1;::::0;15369:14:::1;::::0;15386:15:::1;:11:::0;15400:1:::1;15386:15;:::i;:::-;:31;;;;:::i;:::-;15369:48:::0;-1:-1:-1;15436:10:0;;15432:87:::1;;15475:9;::::0;15467:36:::1;::::0;-1:-1:-1;;;;;15475:9:0::1;15496:6:::0;15467:28:::1;:36::i;:::-;14126:1406;;;;;;;;;;14078:1454;13947:1592;8925:1;8941:10:::0;:18;;-1:-1:-1;;;;8941:18:0;;;13869:1670;;:::o;4151:578::-;-1:-1:-1;;;;;4291:20:0;;4283:70;;;;-1:-1:-1;;;4283:70:0;;19487:2:1;4283:70:0;;;19469:21:1;19526:2;19506:18;;;19499:30;19565:34;19545:18;;;19538:62;-1:-1:-1;;;19616:18:1;;;19609:35;19661:19;;4283:70:0;19285:401:1;4283:70:0;-1:-1:-1;;;;;4372:23:0;;4364:71;;;;-1:-1:-1;;;4364:71:0;;19893:2:1;4364:71:0;;;19875:21:1;19932:2;19912:18;;;19905:30;19971:34;19951:18;;;19944:62;-1:-1:-1;;;20022:18:1;;;20015:33;20065:19;;4364:71:0;19691:399:1;4364:71:0;-1:-1:-1;;;;;4472:17:0;;4448:21;4472:17;;;;;;;;;;;4508:23;;;;4500:74;;;;-1:-1:-1;;;4500:74:0;;20297:2:1;4500:74:0;;;20279:21:1;20336:2;20316:18;;;20309:30;20375:34;20355:18;;;20348:62;-1:-1:-1;;;20426:18:1;;;20419:36;20472:19;;4500:74:0;20095:402:1;4500:74:0;4605:22;4621:6;4605:13;:22;:::i;:::-;-1:-1:-1;;;;;4585:17:0;;;:9;:17;;;;;;;;;;;:42;;;;4638:20;;;;;;;;:30;;4662:6;;4585:9;4638:30;;4662:6;;4638:30;:::i;:::-;;;;;;;;4703:9;-1:-1:-1;;;;;4686:35:0;4695:6;-1:-1:-1;;;;;4686:35:0;;4714:6;4686:35;;;;3720:25:1;;3708:2;3693:18;;3574:177;4686:35:0;;;;;;;;4272:457;4151:578;;;:::o;15545:444::-;15635:16;;;15649:1;15635:16;;;;;;;;15611:21;;15635:16;;;;;;;;;;-1:-1:-1;15635:16:0;15611:40;;15680:4;15662;15667:1;15662:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15662:23:0;;;:7;;;;;;;;;;:23;;;;15706:6;;:13;;;-1:-1:-1;;;15706:13:0;;;;:6;;;;;:11;;:13;;;;;15662:7;;15706:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15696:4;15701:1;15696:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15696:23:0;;;:7;;;;;;;;;:23;15762:6;;15730:53;;15747:4;;15762:6;15771:11;15730:8;:53::i;:::-;15794:6;;:187;;-1:-1:-1;;;15794:187:0;;-1:-1:-1;;;;;15794:6:0;;;;:57;;:187;;15866:11;;15794:6;;15908:4;;15935;;15955:15;;15794:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15600:389;15545:444;:::o;15997:345::-;16108:6;;16076:53;;16093:4;;-1:-1:-1;;;;;16108:6:0;16117:11;16076:8;:53::i;:::-;16140:6;;:194;;-1:-1:-1;;;16140:194:0;;16205:4;16140:194;;;22084:34:1;22134:18;;;22127:34;;;16140:6:0;22177:18:1;;;22170:34;;;22220:18;;;22213:34;8360:42:0;22263:19:1;;;22256:44;16308:15:0;22316:19:1;;;22309:35;-1:-1:-1;;;;;16140:6:0;;;;:22;;16171:9;;22018:19:1;;16140:194:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15997:345;;:::o;5356:319::-;5471:6;5446:21;:31;;5438:73;;;;-1:-1:-1;;;5438:73:0;;22868:2:1;5438:73:0;;;22850:21:1;22907:2;22887:18;;;22880:30;22946:31;22926:18;;;22919:59;22995:18;;5438:73:0;22666:353:1;5438:73:0;5525:12;5543:9;-1:-1:-1;;;;;5543:14:0;5566:6;5543:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5524:54;;;5597:7;5589:78;;;;-1:-1:-1;;;5589:78:0;;23436:2:1;5589:78:0;;;23418:21:1;23475:2;23455:18;;;23448:30;23514:34;23494:18;;;23487:62;23585:28;23565:18;;;23558:56;23631:19;;5589:78:0;23234:422:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:127::-;1415:10;1410:3;1406:20;1403:1;1396:31;1446:4;1443:1;1436:15;1470:4;1467:1;1460:15;1486:118;1572:5;1565:13;1558:21;1551:5;1548:32;1538:60;;1594:1;1591;1584:12;1609:128;1674:20;;1703:28;1674:20;1703:28;:::i;1742:1191::-;1832:6;1840;1893:2;1881:9;1872:7;1868:23;1864:32;1861:52;;;1909:1;1906;1899:12;1861:52;1949:9;1936:23;1978:18;2019:2;2011:6;2008:14;2005:34;;;2035:1;2032;2025:12;2005:34;2073:6;2062:9;2058:22;2048:32;;2118:7;2111:4;2107:2;2103:13;2099:27;2089:55;;2140:1;2137;2130:12;2089:55;2176:2;2163:16;2198:4;2221:2;2217;2214:10;2211:36;;;2227:18;;:::i;:::-;2273:2;2270:1;2266:10;2305:2;2299:9;2368:2;2364:7;2359:2;2355;2351:11;2347:25;2339:6;2335:38;2423:6;2411:10;2408:22;2403:2;2391:10;2388:18;2385:46;2382:72;;;2434:18;;:::i;:::-;2470:2;2463:22;2520:18;;;2554:15;;;;-1:-1:-1;2596:11:1;;;2592:20;;;2624:19;;;2621:39;;;2656:1;2653;2646:12;2621:39;2680:11;;;;2700:148;2716:6;2711:3;2708:15;2700:148;;;2782:23;2801:3;2782:23;:::i;:::-;2770:36;;2733:12;;;;2826;;;;2700:148;;;2867:6;-1:-1:-1;2892:35:1;;-1:-1:-1;2908:18:1;;;2892:35;:::i;:::-;2882:45;;;;;;1742:1191;;;;;:::o;2938:385::-;3024:6;3032;3040;3048;3101:3;3089:9;3080:7;3076:23;3072:33;3069:53;;;3118:1;3115;3108:12;3069:53;-1:-1:-1;;3141:23:1;;;3211:2;3196:18;;3183:32;;-1:-1:-1;3262:2:1;3247:18;;3234:32;;3313:2;3298:18;3285:32;;-1:-1:-1;2938:385:1;-1:-1:-1;2938:385:1:o;3328:241::-;3384:6;3437:2;3425:9;3416:7;3412:23;3408:32;3405:52;;;3453:1;3450;3443:12;3405:52;3492:9;3479:23;3511:28;3533:5;3511:28;:::i;:::-;3558:5;3328:241;-1:-1:-1;;;3328:241:1:o;3756:247::-;3815:6;3868:2;3856:9;3847:7;3843:23;3839:32;3836:52;;;3884:1;3881;3874:12;3836:52;3923:9;3910:23;3942:31;3967:5;3942:31;:::i;4008:456::-;4085:6;4093;4101;4154:2;4142:9;4133:7;4129:23;4125:32;4122:52;;;4170:1;4167;4160:12;4122:52;4209:9;4196:23;4228:31;4253:5;4228:31;:::i;:::-;4278:5;-1:-1:-1;4335:2:1;4320:18;;4307:32;4348:33;4307:32;4348:33;:::i;:::-;4008:456;;4400:7;;-1:-1:-1;;;4454:2:1;4439:18;;;;4426:32;;4008:456::o;4658:382::-;4723:6;4731;4784:2;4772:9;4763:7;4759:23;4755:32;4752:52;;;4800:1;4797;4790:12;4752:52;4839:9;4826:23;4858:31;4883:5;4858:31;:::i;:::-;4908:5;-1:-1:-1;4965:2:1;4950:18;;4937:32;4978:30;4937:32;4978:30;:::i;:::-;5027:7;5017:17;;;4658:382;;;;;:::o;5045:180::-;5104:6;5157:2;5145:9;5136:7;5132:23;5128:32;5125:52;;;5173:1;5170;5163:12;5125:52;-1:-1:-1;5196:23:1;;5045:180;-1:-1:-1;5045:180:1:o;5834:388::-;5902:6;5910;5963:2;5951:9;5942:7;5938:23;5934:32;5931:52;;;5979:1;5976;5969:12;5931:52;6018:9;6005:23;6037:31;6062:5;6037:31;:::i;:::-;6087:5;-1:-1:-1;6144:2:1;6129:18;;6116:32;6157:33;6116:32;6157:33;:::i;6227:316::-;6304:6;6312;6320;6373:2;6361:9;6352:7;6348:23;6344:32;6341:52;;;6389:1;6386;6379:12;6341:52;-1:-1:-1;;6412:23:1;;;6482:2;6467:18;;6454:32;;-1:-1:-1;6533:2:1;6518:18;;;6505:32;;6227:316;-1:-1:-1;6227:316:1:o;6548:309::-;6613:6;6621;6674:2;6662:9;6653:7;6649:23;6645:32;6642:52;;;6690:1;6687;6680:12;6642:52;6729:9;6716:23;6748:28;6770:5;6748:28;:::i;7085:380::-;7164:1;7160:12;;;;7207;;;7228:61;;7282:4;7274:6;7270:17;7260:27;;7228:61;7335:2;7327:6;7324:14;7304:18;7301:38;7298:161;;7381:10;7376:3;7372:20;7369:1;7362:31;7416:4;7413:1;7406:15;7444:4;7441:1;7434:15;7298:161;;7085:380;;;:::o;7470:356::-;7672:2;7654:21;;;7691:18;;;7684:30;7750:34;7745:2;7730:18;;7723:62;7817:2;7802:18;;7470:356::o;7831:127::-;7892:10;7887:3;7883:20;7880:1;7873:31;7923:4;7920:1;7913:15;7947:4;7944:1;7937:15;7963:127;8024:10;8019:3;8015:20;8012:1;8005:31;8055:4;8052:1;8045:15;8079:4;8076:1;8069:15;8095:125;8160:9;;;8181:10;;;8178:36;;;8194:18;;:::i;8583:398::-;8785:2;8767:21;;;8824:2;8804:18;;;8797:30;8863:34;8858:2;8843:18;;8836:62;-1:-1:-1;;;8929:2:1;8914:18;;8907:32;8971:3;8956:19;;8583:398::o;9748:128::-;9815:9;;;9836:11;;;9833:37;;;9850:18;;:::i;10312:416::-;10401:1;10438:5;10401:1;10452:270;10473:7;10463:8;10460:21;10452:270;;;10532:4;10528:1;10524:6;10520:17;10514:4;10511:27;10508:53;;;10541:18;;:::i;:::-;10591:7;10581:8;10577:22;10574:55;;;10611:16;;;;10574:55;10690:22;;;;10650:15;;;;10452:270;;;10456:3;10312:416;;;;;:::o;10733:806::-;10782:5;10812:8;10802:80;;-1:-1:-1;10853:1:1;10867:5;;10802:80;10901:4;10891:76;;-1:-1:-1;10938:1:1;10952:5;;10891:76;10983:4;11001:1;10996:59;;;;11069:1;11064:130;;;;10976:218;;10996:59;11026:1;11017:10;;11040:5;;;11064:130;11101:3;11091:8;11088:17;11085:43;;;11108:18;;:::i;:::-;-1:-1:-1;;11164:1:1;11150:16;;11179:5;;10976:218;;11278:2;11268:8;11265:16;11259:3;11253:4;11250:13;11246:36;11240:2;11230:8;11227:16;11222:2;11216:4;11213:12;11209:35;11206:77;11203:159;;;-1:-1:-1;11315:19:1;;;11347:5;;11203:159;11394:34;11419:8;11413:4;11394:34;:::i;:::-;11464:6;11460:1;11456:6;11452:19;11443:7;11440:32;11437:58;;;11475:18;;:::i;:::-;11513:20;;10733:806;-1:-1:-1;;;10733:806:1:o;11544:140::-;11602:5;11631:47;11672:4;11662:8;11658:19;11652:4;11631:47;:::i;11689:168::-;11762:9;;;11793;;11810:15;;;11804:22;;11790:37;11780:71;;11831:18;;:::i;12564:245::-;12631:6;12684:2;12672:9;12663:7;12659:23;12655:32;12652:52;;;12700:1;12697;12690:12;12652:52;12732:9;12726:16;12751:28;12773:5;12751:28;:::i;19063:217::-;19103:1;19129;19119:132;;19173:10;19168:3;19164:20;19161:1;19154:31;19208:4;19205:1;19198:15;19236:4;19233:1;19226:15;19119:132;-1:-1:-1;19265:9:1;;19063:217::o;20502:251::-;20572:6;20625:2;20613:9;20604:7;20600:23;20596:32;20593:52;;;20641:1;20638;20631:12;20593:52;20673:9;20667:16;20692:31;20717:5;20692:31;:::i;20758:980::-;21020:4;21068:3;21057:9;21053:19;21099:6;21088:9;21081:25;21125:2;21163:6;21158:2;21147:9;21143:18;21136:34;21206:3;21201:2;21190:9;21186:18;21179:31;21230:6;21265;21259:13;21296:6;21288;21281:22;21334:3;21323:9;21319:19;21312:26;;21373:2;21365:6;21361:15;21347:29;;21394:1;21404:195;21418:6;21415:1;21412:13;21404:195;;;21483:13;;-1:-1:-1;;;;;21479:39:1;21467:52;;21574:15;;;;21539:12;;;;21515:1;21433:9;21404:195;;;-1:-1:-1;;;;;;;21655:32:1;;;;21650:2;21635:18;;21628:60;-1:-1:-1;;;21719:3:1;21704:19;21697:35;21616:3;20758:980;-1:-1:-1;;;20758:980:1:o;22355:306::-;22443:6;22451;22459;22512:2;22500:9;22491:7;22487:23;22483:32;22480:52;;;22528:1;22525;22518:12;22480:52;22557:9;22551:16;22541:26;;22607:2;22596:9;22592:18;22586:25;22576:35;;22651:2;22640:9;22636:18;22630:25;22620:35;;22355:306;;;;;:::o

Swarm Source

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