ETH Price: $3,998.48 (+0.14%)
Gas: 7.73 Gwei

Token

ERC-20: FrogArmyCapital (FROG)
 

Overview

Max Total Supply

1,000,000,000,000 FROG

Holders

21

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
FrogArmyCapital

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// File: FrogArmy.sol

/**

           .--._.--.
          ( O     O )
          /   . .   \
         .`._______.'.
        /(           )\
      _/  \  \   /  /  \_
   .~   `  \  \ /  /  '   ~.
  {    -.   \  V  /   .-    }
_ _`.    \  |  |  |  /    .'_ _
>_       _} |  |  | {_       _<
 /. - ~ ,_-'  .^.  `-_, ~ - .\
         '-'|/   \|`-`
         
Frog Army Capital: $FROG
-Cross-Chain Farming For Frog Army.
-Frog Army Capital is a DAO managed investment fund where holders get distributed profits through reflections and token buybacks. You buy on Ethereum, we allocate in a basket of investments (defi protocols, tokens, NFTs) across chains and return the profits to $FROG holders. Token holders have decisional power over the treasury wallet and are effectively shareholders.


Tokenomics:
10% of tax goes to $FROG holders.
10% of tax goes into cross-chain investing to add to the treasury and buy back $FROG tokens.

Telegram: https://t.me/FrogArmyCapital
Website: https://frogarmy.capital/
Twitter: https://twitter.com/FrogArmyCap

*/


pragma solidity ^0.8.4;

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

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

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

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

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

    string private constant _name = "FrogArmyCapital";
    string private constant _symbol = "FROG";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping (address => bool) public _isExcludedMaxTxAmount;
    mapping(address => bool) private _isExcludedFromReflection;
    address[] private _excludedFromReflection;

    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000 * 1e9 * 1e9; //1,000,000,000,000
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    mapping(address => bool) public bots;
    
   
    uint256 private _reflectionFeeOnBuy = 5;
    uint256 private _taxFeeOnBuy = 5;
    
    uint256 private _reflectionFeeOnSell = 5;
    uint256 private _taxFeeOnSell = 5;
    
    //Original Fee
    uint256 private _reflectionFee = _reflectionFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    
    uint256 private _previousReflectionFee = _reflectionFee;
    uint256 private _previousTaxFee = _taxFee;
    
    //change these addresses or you will burn your dev tax
    address payable public _FROGAddress = payable(0x67F59DAAAE4Ff160942beeaF63C1533EfBeb76A1); //treasury wallet
    address payable public _mktgAddress = payable(0x5E83c0D2d32f5a3a0a9e4F07c9Ac18EF4543B7B2); //token marketing/development wallet
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool private inSwap = false;
    bool private swapEnabled = true;
    bool public tradingActive = false;
    
    uint256 public _maxTxAmount = 5000 * 1e8 * 1e9; 
    uint256 public _maxWalletSize = 5000 * 1e8 * 1e9; 
    uint256 public _swapTokensAtAmount = 5000 * 1e8 * 1e9; 
    
    event ExcludeFromReflection(address excludedAddress);
    event IncludeInReflection(address includedAddress);

    event ExcludeFromFee(address excludedAddress);
    event IncludeInFee(address includedAddress);

    event UpdatedMktgAddress(address mktg); //team support wallet
    event UpdatedFROGAddress(address FROG); //investment wallet

    event SetBuyFee(uint256 buyMktgFee, uint256 buyReflectionFee);
    event SetSellFee(uint256 sellMktgFee, uint256 sellReflectionFee);
    
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    constructor () {
               
        _rOwned[_msgSender()] = _rTotal;
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_FROGAddress] = true;
        _isExcludedFromFee[_mktgAddress] = true;

        excludeFromMaxTxAmount(owner(), true);
        excludeFromMaxTxAmount(address(this), true);
        excludeFromMaxTxAmount(address(_FROGAddress), true);
        excludeFromMaxTxAmount(address(_mktgAddress), true);
        
        emit Transfer(address(0), _msgSender(), _tTotal);

    }

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

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

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

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

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

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

    function excludeFromFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = true;
        emit ExcludeFromFee(account);
    }

    function includeInFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = false;
        emit IncludeInFee(account);
    }

    function excludeFromReflection(address account) public onlyOwner {
        require(!_isExcludedFromReflection[account], "Account is already excluded");
        require(_excludedFromReflection.length + 1 <= 50, "Cannot exclude more than 50 accounts.  Include a previously excluded address.");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcludedFromReflection[account] = true;
        _excludedFromReflection.push(account);
    }

    function includeInReflection(address account) public onlyOwner {
        require(_isExcludedFromReflection[account], "Account is not excluded from reflection");
        for (uint256 i = 0; i < _excludedFromReflection.length; i++) {
            if (_excludedFromReflection[i] == account) {
                _excludedFromReflection[i] = _excludedFromReflection[_excludedFromReflection.length - 1];
                _tOwned[account] = 0;
                _isExcludedFromReflection[account] = false;
                _excludedFromReflection.pop();
                break;
            }
        }
    }

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

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

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

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

    function removeAllFee() private {
        if (_reflectionFee == 0 && _taxFee == 0) return;
    
        _previousReflectionFee = _reflectionFee;
        _previousTaxFee = _taxFee;
        
        _reflectionFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _reflectionFee = _previousReflectionFee;
        _taxFee = _previousTaxFee;
    }

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

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

        if (from != owner() && to != owner()) {
            
            //Trade start check
            if (!tradingActive) 
              
            if(to != uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to]) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
                require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
                require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
            }
            
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
            
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        
        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
            
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _reflectionFee = _reflectionFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
    
            //Set Fee for Sells
            if (!_isExcludedFromFee[from]) {
                        require(amount <= _maxTxAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _reflectionFee = _reflectionFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
            
        }

        _tokenTransfer(from, to, amount, takeFee);
    }  

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

    function sendETHToFee(uint256 amount) private {
        _FROGAddress.transfer(amount.div(2));
        _mktgAddress.transfer(amount.div(2));
    }

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

    function manualSend() external {
        require(_msgSender() == _FROGAddress || _msgSender() == _mktgAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
    
    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

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

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

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

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

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

    receive() external payable {}

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

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

        return (tTransferAmount, tFee, tTeam);
    }

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

        return (rAmount, rTransferAmount, rFee);
    }

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

        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
    
        return (rSupply, tSupply);
    }
    
    function setFee(uint256 reflectionFeeOnBuy, uint256 reflectionFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _reflectionFeeOnBuy = reflectionFeeOnBuy;
        _taxFeeOnBuy = taxFeeOnBuy;
        
        _reflectionFeeOnSell = reflectionFeeOnSell;
        _taxFeeOnSell = taxFeeOnSell;
        
        require(_reflectionFeeOnBuy + _taxFeeOnBuy <= 25, "Must keep buy taxes below 25%"); //wont allow taxes to go above 10%
        require(_reflectionFeeOnSell + _taxFeeOnSell <= 25, "Must keep buy taxes below 25%"); //wont allow taxes to go above 10%
    }

      // once enabled, can never be turned off
    function enableTrading() internal onlyOwner {
        tradingActive = true;        
    }
    
    function airdrop(address[] memory airdropWallets, uint256[] memory amounts) external onlyOwner returns (bool){
        require(!tradingActive, "Trading is already active, cannot relaunch.");
        require(airdropWallets.length < 200, "Can only airdrop 200 wallets per txn due to gas limits"); // allows for airdrop
        for(uint256 i = 0; i < airdropWallets.length; i++){
            address wallet = airdropWallets[i];
            uint256 amount = amounts[i];
            _transfer(msg.sender, wallet, amount);
        }
        enableTrading();
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        excludeFromMaxTxAmount(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTxAmount(address(uniswapV2Pair), true);
        return true;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
    
    //Set max transaction
    function setMaxTxAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function excludeFromMaxTxAmount(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTxAmount[updAds] = isEx;
    }
    
    //set max wallet
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

     //set wallet address
    function _setFROGAddress(address FROGAddress) external onlyOwner {
        require(_FROGAddress != address(0), "_FROGAddress cannot be 0");
        _isExcludedFromFee[FROGAddress] = false;
        FROGAddress = payable(_FROGAddress);
        _isExcludedFromFee[FROGAddress] = true;
        emit UpdatedFROGAddress(_FROGAddress);
    }

     //set wallet address
    function _setMktgAddress(address mktgAddress) external onlyOwner {
        require(_mktgAddress != address(0), "_mktgAddress cannot be 0");
        _isExcludedFromFee[mktgAddress] = false;
        mktgAddress = payable(_mktgAddress);
        _isExcludedFromFee[mktgAddress] = true;
        emit UpdatedMktgAddress(_mktgAddress);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"excludedAddress","type":"address"}],"name":"ExcludeFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"excludedAddress","type":"address"}],"name":"ExcludeFromReflection","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"includedAddress","type":"address"}],"name":"IncludeInFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"includedAddress","type":"address"}],"name":"IncludeInReflection","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyMktgFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyReflectionFee","type":"uint256"}],"name":"SetBuyFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellMktgFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellReflectionFee","type":"uint256"}],"name":"SetSellFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"FROG","type":"address"}],"name":"UpdatedFROGAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"mktg","type":"address"}],"name":"UpdatedMktgAddress","type":"event"},{"inputs":[],"name":"_FROGAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mktgAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"FROGAddress","type":"address"}],"name":"_setFROGAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"mktgAddress","type":"address"}],"name":"_setMktgAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReflection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReflection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflectionFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"reflectionFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingActive","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":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001b683635c9adc5dea00000600019620002ce565b6200002990600019620002a8565b6009556005600c819055600d819055600e819055600f819055601081905560118190556012819055601355601480546001600160a01b03199081167367f59daaae4ff160942beeaf63c1533efbeb76a11790915560158054909116735e83c0d2d32f5a3a0a9e4f07c9ac18ef4543b7b21790556017805462ffffff60a01b1916600160a81b179055681b1ae4d6e2ef50000060188190556019819055601a55348015620000d557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506009543360009081526002602090815260408083209390935581546001600160a01b03908116835260059091528282208054600160ff1991821681179092553084528484208054821683179055601454831684528484208054821683179055601554831684529383208054909416179092555462000198911660016200021e565b620001a53060016200021e565b601454620001be906001600160a01b031660016200021e565b601554620001d7906001600160a01b031660016200021e565b604051683635c9adc5dea00000815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620002f1565b6000546001600160a01b031633146200027d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600082821015620002c957634e487b7160e01b600052601160045260246000fd5b500390565b600082620002ec57634e487b7160e01b600052601260045260246000fd5b500690565b6129bf80620003016000396000f3fe60806040526004361061021c5760003560e01c80636b99905311610123578063b792dafd116100ab578063ea1644d51161006f578063ea1644d5146106a3578063ea2f0b37146106c3578063ec28438a146106e3578063f2fde38b14610703578063f42938901461072357600080fd5b8063b792dafd146105cc578063bbc0c742146105ec578063bfd792841461060d578063dd62ed3e1461063d578063e755d0cf1461068357600080fd5b80638f9a55c0116100f25780638f9a55c01461052957806395d89b411461053f57806398a5c3151461056c578063a2a957bb1461058c578063a9059cbb146105ac57600080fd5b80636b999053146104b557806370a08231146104d55780637d1db4a5146104f55780638da5cb5b1461050b57600080fd5b80632fd689e3116101a657806351bc3c851161017557806351bc3c8514610410578063563912bd14610425578063595cc84f146104555780635a07a42514610475578063672434821461049557600080fd5b80632fd689e31461039e578063313ce567146103b4578063437823ec146103d057806349bd5a5e146103f057600080fd5b8063095ea7b3116101ed578063095ea7b3146102e85780631694505e1461031857806318160ddd1461033857806323b872dd1461035e57806327334a081461037e57600080fd5b806286803414610228578062b8cf2a1461026557806305f82a451461028757806306fdde03146102a757600080fd5b3661022357005b600080fd5b34801561023457600080fd5b50601554610248906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027157600080fd5b506102856102803660046125cf565b610738565b005b34801561029357600080fd5b506102856102a23660046124bc565b6107d7565b3480156102b357600080fd5b5060408051808201909152600f81526e119c9bd9d05c9b5e50d85c1a5d185b608a1b60208201525b60405161025c9190612719565b3480156102f457600080fd5b506103086103033660046125a3565b61099a565b604051901515815260200161025c565b34801561032457600080fd5b50601654610248906001600160a01b031681565b34801561034457600080fd5b50683635c9adc5dea000005b60405190815260200161025c565b34801561036a57600080fd5b5061030861037936600461252f565b6109b1565b34801561038a57600080fd5b506102856103993660046124bc565b610a1a565b3480156103aa57600080fd5b50610350601a5481565b3480156103c057600080fd5b506040516009815260200161025c565b3480156103dc57600080fd5b506102856103eb3660046124bc565b610c08565b3480156103fc57600080fd5b50601754610248906001600160a01b031681565b34801561041c57600080fd5b50610285610c8d565b34801561043157600080fd5b506103086104403660046124bc565b60066020526000908152604090205460ff1681565b34801561046157600080fd5b50610285610470366004612570565b610cc6565b34801561048157600080fd5b50601454610248906001600160a01b031681565b3480156104a157600080fd5b506103086104b036600461260c565b610d1b565b3480156104c157600080fd5b506102856104d03660046124bc565b611083565b3480156104e157600080fd5b506103506104f03660046124bc565b6110ce565b34801561050157600080fd5b5061035060185481565b34801561051757600080fd5b506000546001600160a01b0316610248565b34801561053557600080fd5b5061035060195481565b34801561054b57600080fd5b5060408051808201909152600481526346524f4760e01b60208201526102db565b34801561057857600080fd5b506102856105873660046126ce565b6110f0565b34801561059857600080fd5b506102856105a73660046126e7565b61111f565b3480156105b857600080fd5b506103086105c73660046125a3565b61121d565b3480156105d857600080fd5b506102856105e73660046124bc565b61122a565b3480156105f857600080fd5b5060175461030890600160b01b900460ff1681565b34801561061957600080fd5b506103086106283660046124bc565b600b6020526000908152604090205460ff1681565b34801561064957600080fd5b506103506106583660046124f6565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561068f57600080fd5b5061028561069e3660046124bc565b61131c565b3480156106af57600080fd5b506102856106be3660046126ce565b61140e565b3480156106cf57600080fd5b506102856106de3660046124bc565b61143d565b3480156106ef57600080fd5b506102856106fe3660046126ce565b6114b8565b34801561070f57600080fd5b5061028561071e3660046124bc565b6114e7565b34801561072f57600080fd5b506102856115d1565b6000546001600160a01b0316331461076b5760405162461bcd60e51b81526004016107629061276e565b60405180910390fd5b60005b81518110156107d3576001600b600084848151811061078f5761078f612920565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806107cb816128d9565b91505061076e565b5050565b6000546001600160a01b031633146108015760405162461bcd60e51b81526004016107629061276e565b6001600160a01b03811660009081526007602052604090205460ff166108795760405162461bcd60e51b815260206004820152602760248201527f4163636f756e74206973206e6f74206578636c756465642066726f6d207265666044820152663632b1ba34b7b760c91b6064820152608401610762565b60005b6008548110156107d357816001600160a01b0316600882815481106108a3576108a3612920565b6000918252602090912001546001600160a01b0316141561098857600880546108ce906001906128c2565b815481106108de576108de612920565b600091825260209091200154600880546001600160a01b03909216918390811061090a5761090a612920565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600382526040808220829055600790925220805460ff1916905560088054806109625761096261290a565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610992816128d9565b91505061087c565b60006109a7338484611619565b5060015b92915050565b60006109be84848461173d565b610a108433610a0b85604051806060016040528060288152602001612962602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611c7e565b611619565b5060019392505050565b6000546001600160a01b03163314610a445760405162461bcd60e51b81526004016107629061276e565b6001600160a01b03811660009081526007602052604090205460ff1615610aad5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610762565b600854603290610abe906001612869565b1115610b485760405162461bcd60e51b815260206004820152604d60248201527f43616e6e6f74206578636c756465206d6f7265207468616e203530206163636f60448201527f756e74732e2020496e636c75646520612070726576696f75736c79206578636c60648201526c3ab232b21030b2323932b9b99760991b608482015260a401610762565b6001600160a01b03811660009081526002602052604090205415610ba2576001600160a01b038116600090815260026020526040902054610b8890611cb8565b6001600160a01b0382166000908152600360205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b03163314610c325760405162461bcd60e51b81526004016107629061276e565b6001600160a01b038116600081815260056020908152604091829020805460ff1916600117905590519182527f58c3e0504c69d3a92726966f152a771e0f8f6ad4daca1ae9055a38aba1fd2b6291015b60405180910390a150565b6014546001600160a01b0316336001600160a01b031614610cad57600080fd5b6000610cb8306110ce565b9050610cc381611d3c565b50565b6000546001600160a01b03163314610cf05760405162461bcd60e51b81526004016107629061276e565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600080546001600160a01b03163314610d465760405162461bcd60e51b81526004016107629061276e565b601754600160b01b900460ff1615610db45760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610762565b60c8835110610e245760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610762565b60005b8351811015610e8c576000848281518110610e4457610e44612920565b602002602001015190506000848381518110610e6257610e62612920565b60200260200101519050610e7733838361173d565b50508080610e84906128d9565b915050610e27565b50610e95611ec5565b737a250d5630b4cf539739df2c5dacb4c659f2488d610eb5816001610cc6565b601680546001600160a01b0319166001600160a01b038316908117909155610ee8903090683635c9adc5dea00000611619565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2157600080fd5b505afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5991906124d9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610fa157600080fd5b505afa158015610fb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd991906124d9565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561102157600080fd5b505af1158015611035573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105991906124d9565b601780546001600160a01b0319166001600160a01b03929092169182179055610a10906001610cc6565b6000546001600160a01b031633146110ad5760405162461bcd60e51b81526004016107629061276e565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6001600160a01b0381166000908152600260205260408120546109ab90611cb8565b6000546001600160a01b0316331461111a5760405162461bcd60e51b81526004016107629061276e565b601a55565b6000546001600160a01b031633146111495760405162461bcd60e51b81526004016107629061276e565b600c849055600d829055600e839055600f81905560196111698386612869565b11156111b75760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203235250000006044820152606401610762565b6019600f54600e546111c99190612869565b11156112175760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203235250000006044820152606401610762565b50505050565b60006109a733848461173d565b6000546001600160a01b031633146112545760405162461bcd60e51b81526004016107629061276e565b6014546001600160a01b03166112ac5760405162461bcd60e51b815260206004820152601860248201527f5f46524f47416464726573732063616e6e6f74206265203000000000000000006044820152606401610762565b6001600160a01b039081166000908152600560209081526040808320805460ff199081169091556014805486168086529483902080549092166001179091555490519316835290917fc485880907d8d8d1c8c7baabf4836b02ac090a91c926508956cea1787e9140e69101610c82565b6000546001600160a01b031633146113465760405162461bcd60e51b81526004016107629061276e565b6015546001600160a01b031661139e5760405162461bcd60e51b815260206004820152601860248201527f5f6d6b7467416464726573732063616e6e6f74206265203000000000000000006044820152606401610762565b6001600160a01b039081166000908152600560209081526040808320805460ff199081169091556015805486168086529483902080549092166001179091555490519316835290917f4aeacdf11926d26257f8e9ea6e9091947978ac978705e15835bf04f21f4fa69b9101610c82565b6000546001600160a01b031633146114385760405162461bcd60e51b81526004016107629061276e565b601955565b6000546001600160a01b031633146114675760405162461bcd60e51b81526004016107629061276e565b6001600160a01b038116600081815260056020908152604091829020805460ff1916905590519182527f4f6a6b6efe34ec6478021aa9fb7f6980e78ea3a10c74074a8ce49d5d3ebf1f7e9101610c82565b6000546001600160a01b031633146114e25760405162461bcd60e51b81526004016107629061276e565b601855565b6000546001600160a01b031633146115115760405162461bcd60e51b81526004016107629061276e565b6001600160a01b0381166115765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610762565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b0316336001600160a01b0316148061160657506015546001600160a01b0316336001600160a01b0316145b61160f57600080fd5b47610cc381611f04565b6001600160a01b03831661167b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610762565b6001600160a01b0382166116dc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610762565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117a15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610762565b6001600160a01b0382166118035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610762565b600081116118655760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610762565b6000546001600160a01b0384811691161480159061189157506000546001600160a01b03838116911614155b15611ae657601754600160b01b900460ff16611a59576017546001600160a01b038381169116148015906118d357506016546001600160a01b03838116911614155b80156118f857506001600160a01b03821660009081526005602052604090205460ff16155b15611a59576019548161190a846110ce565b6119149190612869565b1061196d5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610762565b6018548111156119bf5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610762565b6001600160a01b0383166000908152600b602052604090205460ff16158015611a0157506001600160a01b0382166000908152600b602052604090205460ff16155b611a595760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610762565b6000611a64306110ce565b601a54601854919250821015908210611a7d5760185491505b808015611a945750601754600160a01b900460ff16155b8015611aae57506017546001600160a01b03868116911614155b8015611ac35750601754600160a81b900460ff165b15611ae357611ad182611d3c565b478015611ae157611ae147611f04565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680611b2857506001600160a01b03831660009081526005602052604090205460ff165b80611b5a57506017546001600160a01b03858116911614801590611b5a57506017546001600160a01b03848116911614155b15611b6757506000611c72565b6017546001600160a01b038581169116148015611b9257506016546001600160a01b03848116911614155b15611ba457600c54601055600d546011555b6001600160a01b03841660009081526005602052604090205460ff16611c3557601854821115611c355760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610762565b6017546001600160a01b038481169116148015611c6057506016546001600160a01b03858116911614155b15611c7257600e54601055600f546011555b61121784848484611f89565b60008184841115611ca25760405162461bcd60e51b81526004016107629190612719565b506000611caf84866128c2565b95945050505050565b6000600954821115611d1f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610762565b6000611d29611fb7565b9050611d358382611fda565b9392505050565b6017805460ff60a01b1916600160a01b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611d8457611d84612920565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611dd857600080fd5b505afa158015611dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1091906124d9565b81600181518110611e2357611e23612920565b6001600160a01b039283166020918202929092010152601654611e499130911684611619565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e829085906000908690309042906004016127a3565b600060405180830381600087803b158015611e9c57600080fd5b505af1158015611eb0573d6000803e3d6000fd5b50506017805460ff60a01b1916905550505050565b6000546001600160a01b03163314611eef5760405162461bcd60e51b81526004016107629061276e565b6017805460ff60b01b1916600160b01b179055565b6014546001600160a01b03166108fc611f1e836002611fda565b6040518115909202916000818181858888f19350505050158015611f46573d6000803e3d6000fd5b506015546001600160a01b03166108fc611f61836002611fda565b6040518115909202916000818181858888f193505050501580156107d3573d6000803e3d6000fd5b80611f9657611f9661201c565b611fa184848461204a565b8061121757611217601254601055601354601155565b6000806000611fc4612141565b9092509050611fd38282611fda565b9250505090565b6000611d3583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612183565b60105415801561202c5750601154155b1561203357565b601080546012556011805460135560009182905555565b60008060008060008061205c876121b1565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061208e908761220e565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546120bd9086612250565b6001600160a01b0389166000908152600260205260409020556120df816122af565b6120e984836122f9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161212e91815260200190565b60405180910390a3505050505050505050565b6009546000908190683635c9adc5dea0000061215d8282611fda565b82101561217a57505060095492683635c9adc5dea0000092509050565b90939092509050565b600081836121a45760405162461bcd60e51b81526004016107629190612719565b506000611caf8486612881565b60008060008060008060008060006121ce8a60105460115461231d565b92509250925060006121de611fb7565b905060008060006121f18e878787612372565b919e509c509a509598509396509194505050505091939550919395565b6000611d3583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c7e565b60008061225d8385612869565b905083811015611d355760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610762565b60006122b9611fb7565b905060006122c783836123c2565b306000908152600260205260409020549091506122e49082612250565b30600090815260026020526040902055505050565b600954612306908361220e565b600955600a546123169082612250565b600a555050565b6000808080612337606461233189896123c2565b90611fda565b9050600061234a60646123318a896123c2565b905060006123628261235c8b8661220e565b9061220e565b9992985090965090945050505050565b600080808061238188866123c2565b9050600061238f88876123c2565b9050600061239d88886123c2565b905060006123af8261235c868661220e565b939b939a50919850919650505050505050565b6000826123d1575060006109ab565b60006123dd83856128a3565b9050826123ea8583612881565b14611d355760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610762565b600082601f83011261245257600080fd5b8135602061246761246283612845565b612814565b80838252828201915082860187848660051b890101111561248757600080fd5b60005b858110156124af57813561249d8161294c565b8452928401929084019060010161248a565b5090979650505050505050565b6000602082840312156124ce57600080fd5b8135611d358161294c565b6000602082840312156124eb57600080fd5b8151611d358161294c565b6000806040838503121561250957600080fd5b82356125148161294c565b915060208301356125248161294c565b809150509250929050565b60008060006060848603121561254457600080fd5b833561254f8161294c565b9250602084013561255f8161294c565b929592945050506040919091013590565b6000806040838503121561258357600080fd5b823561258e8161294c565b91506020830135801515811461252457600080fd5b600080604083850312156125b657600080fd5b82356125c18161294c565b946020939093013593505050565b6000602082840312156125e157600080fd5b813567ffffffffffffffff8111156125f857600080fd5b61260484828501612441565b949350505050565b6000806040838503121561261f57600080fd5b823567ffffffffffffffff8082111561263757600080fd5b61264386838701612441565b935060209150818501358181111561265a57600080fd5b85019050601f8101861361266d57600080fd5b803561267b61246282612845565b80828252848201915084840189868560051b870101111561269b57600080fd5b600094505b838510156126be5780358352600194909401939185019185016126a0565b5080955050505050509250929050565b6000602082840312156126e057600080fd5b5035919050565b600080600080608085870312156126fd57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b818110156127465785810183015185820160400152820161272a565b81811115612758576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127f35784516001600160a01b0316835293830193918301916001016127ce565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff8111828210171561283d5761283d612936565b604052919050565b600067ffffffffffffffff82111561285f5761285f612936565b5060051b60200190565b6000821982111561287c5761287c6128f4565b500190565b60008261289e57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156128bd576128bd6128f4565b500290565b6000828210156128d4576128d46128f4565b500390565b60006000198214156128ed576128ed6128f4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610cc357600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f92ea06b85c7c830160aaa42464abb8717b52fe8bb9adbaa6cd8346b21f8aef764736f6c63430008070033

Deployed Bytecode

0x60806040526004361061021c5760003560e01c80636b99905311610123578063b792dafd116100ab578063ea1644d51161006f578063ea1644d5146106a3578063ea2f0b37146106c3578063ec28438a146106e3578063f2fde38b14610703578063f42938901461072357600080fd5b8063b792dafd146105cc578063bbc0c742146105ec578063bfd792841461060d578063dd62ed3e1461063d578063e755d0cf1461068357600080fd5b80638f9a55c0116100f25780638f9a55c01461052957806395d89b411461053f57806398a5c3151461056c578063a2a957bb1461058c578063a9059cbb146105ac57600080fd5b80636b999053146104b557806370a08231146104d55780637d1db4a5146104f55780638da5cb5b1461050b57600080fd5b80632fd689e3116101a657806351bc3c851161017557806351bc3c8514610410578063563912bd14610425578063595cc84f146104555780635a07a42514610475578063672434821461049557600080fd5b80632fd689e31461039e578063313ce567146103b4578063437823ec146103d057806349bd5a5e146103f057600080fd5b8063095ea7b3116101ed578063095ea7b3146102e85780631694505e1461031857806318160ddd1461033857806323b872dd1461035e57806327334a081461037e57600080fd5b806286803414610228578062b8cf2a1461026557806305f82a451461028757806306fdde03146102a757600080fd5b3661022357005b600080fd5b34801561023457600080fd5b50601554610248906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027157600080fd5b506102856102803660046125cf565b610738565b005b34801561029357600080fd5b506102856102a23660046124bc565b6107d7565b3480156102b357600080fd5b5060408051808201909152600f81526e119c9bd9d05c9b5e50d85c1a5d185b608a1b60208201525b60405161025c9190612719565b3480156102f457600080fd5b506103086103033660046125a3565b61099a565b604051901515815260200161025c565b34801561032457600080fd5b50601654610248906001600160a01b031681565b34801561034457600080fd5b50683635c9adc5dea000005b60405190815260200161025c565b34801561036a57600080fd5b5061030861037936600461252f565b6109b1565b34801561038a57600080fd5b506102856103993660046124bc565b610a1a565b3480156103aa57600080fd5b50610350601a5481565b3480156103c057600080fd5b506040516009815260200161025c565b3480156103dc57600080fd5b506102856103eb3660046124bc565b610c08565b3480156103fc57600080fd5b50601754610248906001600160a01b031681565b34801561041c57600080fd5b50610285610c8d565b34801561043157600080fd5b506103086104403660046124bc565b60066020526000908152604090205460ff1681565b34801561046157600080fd5b50610285610470366004612570565b610cc6565b34801561048157600080fd5b50601454610248906001600160a01b031681565b3480156104a157600080fd5b506103086104b036600461260c565b610d1b565b3480156104c157600080fd5b506102856104d03660046124bc565b611083565b3480156104e157600080fd5b506103506104f03660046124bc565b6110ce565b34801561050157600080fd5b5061035060185481565b34801561051757600080fd5b506000546001600160a01b0316610248565b34801561053557600080fd5b5061035060195481565b34801561054b57600080fd5b5060408051808201909152600481526346524f4760e01b60208201526102db565b34801561057857600080fd5b506102856105873660046126ce565b6110f0565b34801561059857600080fd5b506102856105a73660046126e7565b61111f565b3480156105b857600080fd5b506103086105c73660046125a3565b61121d565b3480156105d857600080fd5b506102856105e73660046124bc565b61122a565b3480156105f857600080fd5b5060175461030890600160b01b900460ff1681565b34801561061957600080fd5b506103086106283660046124bc565b600b6020526000908152604090205460ff1681565b34801561064957600080fd5b506103506106583660046124f6565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561068f57600080fd5b5061028561069e3660046124bc565b61131c565b3480156106af57600080fd5b506102856106be3660046126ce565b61140e565b3480156106cf57600080fd5b506102856106de3660046124bc565b61143d565b3480156106ef57600080fd5b506102856106fe3660046126ce565b6114b8565b34801561070f57600080fd5b5061028561071e3660046124bc565b6114e7565b34801561072f57600080fd5b506102856115d1565b6000546001600160a01b0316331461076b5760405162461bcd60e51b81526004016107629061276e565b60405180910390fd5b60005b81518110156107d3576001600b600084848151811061078f5761078f612920565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806107cb816128d9565b91505061076e565b5050565b6000546001600160a01b031633146108015760405162461bcd60e51b81526004016107629061276e565b6001600160a01b03811660009081526007602052604090205460ff166108795760405162461bcd60e51b815260206004820152602760248201527f4163636f756e74206973206e6f74206578636c756465642066726f6d207265666044820152663632b1ba34b7b760c91b6064820152608401610762565b60005b6008548110156107d357816001600160a01b0316600882815481106108a3576108a3612920565b6000918252602090912001546001600160a01b0316141561098857600880546108ce906001906128c2565b815481106108de576108de612920565b600091825260209091200154600880546001600160a01b03909216918390811061090a5761090a612920565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600382526040808220829055600790925220805460ff1916905560088054806109625761096261290a565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610992816128d9565b91505061087c565b60006109a7338484611619565b5060015b92915050565b60006109be84848461173d565b610a108433610a0b85604051806060016040528060288152602001612962602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611c7e565b611619565b5060019392505050565b6000546001600160a01b03163314610a445760405162461bcd60e51b81526004016107629061276e565b6001600160a01b03811660009081526007602052604090205460ff1615610aad5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610762565b600854603290610abe906001612869565b1115610b485760405162461bcd60e51b815260206004820152604d60248201527f43616e6e6f74206578636c756465206d6f7265207468616e203530206163636f60448201527f756e74732e2020496e636c75646520612070726576696f75736c79206578636c60648201526c3ab232b21030b2323932b9b99760991b608482015260a401610762565b6001600160a01b03811660009081526002602052604090205415610ba2576001600160a01b038116600090815260026020526040902054610b8890611cb8565b6001600160a01b0382166000908152600360205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b03163314610c325760405162461bcd60e51b81526004016107629061276e565b6001600160a01b038116600081815260056020908152604091829020805460ff1916600117905590519182527f58c3e0504c69d3a92726966f152a771e0f8f6ad4daca1ae9055a38aba1fd2b6291015b60405180910390a150565b6014546001600160a01b0316336001600160a01b031614610cad57600080fd5b6000610cb8306110ce565b9050610cc381611d3c565b50565b6000546001600160a01b03163314610cf05760405162461bcd60e51b81526004016107629061276e565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600080546001600160a01b03163314610d465760405162461bcd60e51b81526004016107629061276e565b601754600160b01b900460ff1615610db45760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610762565b60c8835110610e245760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610762565b60005b8351811015610e8c576000848281518110610e4457610e44612920565b602002602001015190506000848381518110610e6257610e62612920565b60200260200101519050610e7733838361173d565b50508080610e84906128d9565b915050610e27565b50610e95611ec5565b737a250d5630b4cf539739df2c5dacb4c659f2488d610eb5816001610cc6565b601680546001600160a01b0319166001600160a01b038316908117909155610ee8903090683635c9adc5dea00000611619565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2157600080fd5b505afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5991906124d9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610fa157600080fd5b505afa158015610fb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd991906124d9565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561102157600080fd5b505af1158015611035573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105991906124d9565b601780546001600160a01b0319166001600160a01b03929092169182179055610a10906001610cc6565b6000546001600160a01b031633146110ad5760405162461bcd60e51b81526004016107629061276e565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6001600160a01b0381166000908152600260205260408120546109ab90611cb8565b6000546001600160a01b0316331461111a5760405162461bcd60e51b81526004016107629061276e565b601a55565b6000546001600160a01b031633146111495760405162461bcd60e51b81526004016107629061276e565b600c849055600d829055600e839055600f81905560196111698386612869565b11156111b75760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203235250000006044820152606401610762565b6019600f54600e546111c99190612869565b11156112175760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203235250000006044820152606401610762565b50505050565b60006109a733848461173d565b6000546001600160a01b031633146112545760405162461bcd60e51b81526004016107629061276e565b6014546001600160a01b03166112ac5760405162461bcd60e51b815260206004820152601860248201527f5f46524f47416464726573732063616e6e6f74206265203000000000000000006044820152606401610762565b6001600160a01b039081166000908152600560209081526040808320805460ff199081169091556014805486168086529483902080549092166001179091555490519316835290917fc485880907d8d8d1c8c7baabf4836b02ac090a91c926508956cea1787e9140e69101610c82565b6000546001600160a01b031633146113465760405162461bcd60e51b81526004016107629061276e565b6015546001600160a01b031661139e5760405162461bcd60e51b815260206004820152601860248201527f5f6d6b7467416464726573732063616e6e6f74206265203000000000000000006044820152606401610762565b6001600160a01b039081166000908152600560209081526040808320805460ff199081169091556015805486168086529483902080549092166001179091555490519316835290917f4aeacdf11926d26257f8e9ea6e9091947978ac978705e15835bf04f21f4fa69b9101610c82565b6000546001600160a01b031633146114385760405162461bcd60e51b81526004016107629061276e565b601955565b6000546001600160a01b031633146114675760405162461bcd60e51b81526004016107629061276e565b6001600160a01b038116600081815260056020908152604091829020805460ff1916905590519182527f4f6a6b6efe34ec6478021aa9fb7f6980e78ea3a10c74074a8ce49d5d3ebf1f7e9101610c82565b6000546001600160a01b031633146114e25760405162461bcd60e51b81526004016107629061276e565b601855565b6000546001600160a01b031633146115115760405162461bcd60e51b81526004016107629061276e565b6001600160a01b0381166115765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610762565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b0316336001600160a01b0316148061160657506015546001600160a01b0316336001600160a01b0316145b61160f57600080fd5b47610cc381611f04565b6001600160a01b03831661167b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610762565b6001600160a01b0382166116dc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610762565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117a15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610762565b6001600160a01b0382166118035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610762565b600081116118655760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610762565b6000546001600160a01b0384811691161480159061189157506000546001600160a01b03838116911614155b15611ae657601754600160b01b900460ff16611a59576017546001600160a01b038381169116148015906118d357506016546001600160a01b03838116911614155b80156118f857506001600160a01b03821660009081526005602052604090205460ff16155b15611a59576019548161190a846110ce565b6119149190612869565b1061196d5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610762565b6018548111156119bf5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610762565b6001600160a01b0383166000908152600b602052604090205460ff16158015611a0157506001600160a01b0382166000908152600b602052604090205460ff16155b611a595760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610762565b6000611a64306110ce565b601a54601854919250821015908210611a7d5760185491505b808015611a945750601754600160a01b900460ff16155b8015611aae57506017546001600160a01b03868116911614155b8015611ac35750601754600160a81b900460ff165b15611ae357611ad182611d3c565b478015611ae157611ae147611f04565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680611b2857506001600160a01b03831660009081526005602052604090205460ff165b80611b5a57506017546001600160a01b03858116911614801590611b5a57506017546001600160a01b03848116911614155b15611b6757506000611c72565b6017546001600160a01b038581169116148015611b9257506016546001600160a01b03848116911614155b15611ba457600c54601055600d546011555b6001600160a01b03841660009081526005602052604090205460ff16611c3557601854821115611c355760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610762565b6017546001600160a01b038481169116148015611c6057506016546001600160a01b03858116911614155b15611c7257600e54601055600f546011555b61121784848484611f89565b60008184841115611ca25760405162461bcd60e51b81526004016107629190612719565b506000611caf84866128c2565b95945050505050565b6000600954821115611d1f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610762565b6000611d29611fb7565b9050611d358382611fda565b9392505050565b6017805460ff60a01b1916600160a01b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611d8457611d84612920565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611dd857600080fd5b505afa158015611dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1091906124d9565b81600181518110611e2357611e23612920565b6001600160a01b039283166020918202929092010152601654611e499130911684611619565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e829085906000908690309042906004016127a3565b600060405180830381600087803b158015611e9c57600080fd5b505af1158015611eb0573d6000803e3d6000fd5b50506017805460ff60a01b1916905550505050565b6000546001600160a01b03163314611eef5760405162461bcd60e51b81526004016107629061276e565b6017805460ff60b01b1916600160b01b179055565b6014546001600160a01b03166108fc611f1e836002611fda565b6040518115909202916000818181858888f19350505050158015611f46573d6000803e3d6000fd5b506015546001600160a01b03166108fc611f61836002611fda565b6040518115909202916000818181858888f193505050501580156107d3573d6000803e3d6000fd5b80611f9657611f9661201c565b611fa184848461204a565b8061121757611217601254601055601354601155565b6000806000611fc4612141565b9092509050611fd38282611fda565b9250505090565b6000611d3583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612183565b60105415801561202c5750601154155b1561203357565b601080546012556011805460135560009182905555565b60008060008060008061205c876121b1565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061208e908761220e565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546120bd9086612250565b6001600160a01b0389166000908152600260205260409020556120df816122af565b6120e984836122f9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161212e91815260200190565b60405180910390a3505050505050505050565b6009546000908190683635c9adc5dea0000061215d8282611fda565b82101561217a57505060095492683635c9adc5dea0000092509050565b90939092509050565b600081836121a45760405162461bcd60e51b81526004016107629190612719565b506000611caf8486612881565b60008060008060008060008060006121ce8a60105460115461231d565b92509250925060006121de611fb7565b905060008060006121f18e878787612372565b919e509c509a509598509396509194505050505091939550919395565b6000611d3583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c7e565b60008061225d8385612869565b905083811015611d355760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610762565b60006122b9611fb7565b905060006122c783836123c2565b306000908152600260205260409020549091506122e49082612250565b30600090815260026020526040902055505050565b600954612306908361220e565b600955600a546123169082612250565b600a555050565b6000808080612337606461233189896123c2565b90611fda565b9050600061234a60646123318a896123c2565b905060006123628261235c8b8661220e565b9061220e565b9992985090965090945050505050565b600080808061238188866123c2565b9050600061238f88876123c2565b9050600061239d88886123c2565b905060006123af8261235c868661220e565b939b939a50919850919650505050505050565b6000826123d1575060006109ab565b60006123dd83856128a3565b9050826123ea8583612881565b14611d355760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610762565b600082601f83011261245257600080fd5b8135602061246761246283612845565b612814565b80838252828201915082860187848660051b890101111561248757600080fd5b60005b858110156124af57813561249d8161294c565b8452928401929084019060010161248a565b5090979650505050505050565b6000602082840312156124ce57600080fd5b8135611d358161294c565b6000602082840312156124eb57600080fd5b8151611d358161294c565b6000806040838503121561250957600080fd5b82356125148161294c565b915060208301356125248161294c565b809150509250929050565b60008060006060848603121561254457600080fd5b833561254f8161294c565b9250602084013561255f8161294c565b929592945050506040919091013590565b6000806040838503121561258357600080fd5b823561258e8161294c565b91506020830135801515811461252457600080fd5b600080604083850312156125b657600080fd5b82356125c18161294c565b946020939093013593505050565b6000602082840312156125e157600080fd5b813567ffffffffffffffff8111156125f857600080fd5b61260484828501612441565b949350505050565b6000806040838503121561261f57600080fd5b823567ffffffffffffffff8082111561263757600080fd5b61264386838701612441565b935060209150818501358181111561265a57600080fd5b85019050601f8101861361266d57600080fd5b803561267b61246282612845565b80828252848201915084840189868560051b870101111561269b57600080fd5b600094505b838510156126be5780358352600194909401939185019185016126a0565b5080955050505050509250929050565b6000602082840312156126e057600080fd5b5035919050565b600080600080608085870312156126fd57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b818110156127465785810183015185820160400152820161272a565b81811115612758576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127f35784516001600160a01b0316835293830193918301916001016127ce565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff8111828210171561283d5761283d612936565b604052919050565b600067ffffffffffffffff82111561285f5761285f612936565b5060051b60200190565b6000821982111561287c5761287c6128f4565b500190565b60008261289e57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156128bd576128bd6128f4565b500290565b6000828210156128d4576128d46128f4565b500390565b60006000198214156128ed576128ed6128f4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610cc357600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f92ea06b85c7c830160aaa42464abb8717b52fe8bb9adbaa6cd8346b21f8aef764736f6c63430008070033

Deployed Bytecode Sourcemap

4961:17984:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6501:89;;;;;;;;;;-1:-1:-1;6501:89:0;;;;-1:-1:-1;;;;;6501:89:0;;;;;;-1:-1:-1;;;;;5116:32:1;;;5098:51;;5086:2;5071:18;6501:89:0;;;;;;;;16027:169;;;;;;;;;;-1:-1:-1;16027:169:0;;;;;:::i;:::-;;:::i;:::-;;9852:603;;;;;;;;;;-1:-1:-1;9852:603:0;;;;;:::i;:::-;;:::i;8275:83::-;;;;;;;;;;-1:-1:-1;8345:5:0;;;;;;;;;;;;-1:-1:-1;;;8345:5:0;;;;8275:83;;;;;;;:::i;10655:193::-;;;;;;;;;;-1:-1:-1;10655:193:0;;;;;:::i;:::-;;:::i;:::-;;;6074:14:1;;6067:22;6049:41;;6037:2;6022:18;10655:193:0;5909:187:1;6640:41:0;;;;;;;;;;-1:-1:-1;6640:41:0;;;;-1:-1:-1;;;;;6640:41:0;;;8552:95;;;;;;;;;;-1:-1:-1;5703:16:0;8552:95;;;15785:25:1;;;15773:2;15758:18;8552:95:0;15639:177:1;10856:446:0;;;;;;;;;;-1:-1:-1;10856:446:0;;;;;:::i;:::-;;:::i;9325:519::-;;;;;;;;;;-1:-1:-1;9325:519:0;;;;;:::i;:::-;;:::i;6957:53::-;;;;;;;;;;;;;;;;8461:83;;;;;;;;;;-1:-1:-1;8461:83:0;;5200:1;16948:36:1;;16936:2;16921:18;8461:83:0;16806:184:1;9008:152:0;;;;;;;;;;-1:-1:-1;9008:152:0;;;;;:::i;:::-;;:::i;6688:28::-;;;;;;;;;;-1:-1:-1;6688:28:0;;;;-1:-1:-1;;;;;6688:28:0;;;15592:192;;;;;;;;;;;;;:::i;5442:55::-;;;;;;;;;;-1:-1:-1;5442:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21911:132;;;;;;;;;;-1:-1:-1;21911:132:0;;;;;:::i;:::-;;:::i;6387:89::-;;;;;;;;;;-1:-1:-1;6387:89:0;;;;-1:-1:-1;;;;;6387:89:0;;;20501:1065;;;;;;;;;;-1:-1:-1;20501:1065:0;;;;;:::i;:::-;;:::i;16204:92::-;;;;;;;;;;-1:-1:-1;16204:92:0;;;;;:::i;:::-;;:::i;8655:138::-;;;;;;;;;;-1:-1:-1;8655:138:0;;;;;:::i;:::-;;:::i;6847:46::-;;;;;;;;;;;;;;;;2382:79;;;;;;;;;;-1:-1:-1;2420:7:0;2447:6;-1:-1:-1;;;;;2447:6:0;2382:79;;6901:48;;;;;;;;;;;;;;;;8366:87;;;;;;;;;;-1:-1:-1;8438:7:0;;;;;;;;;;;;-1:-1:-1;;;8438:7:0;;;;8366:87;;21618:139;;;;;;;;;;-1:-1:-1;21618:139:0;;;;;:::i;:::-;;:::i;19743:599::-;;;;;;;;;;-1:-1:-1;19743:599:0;;;;;:::i;:::-;;:::i;8801:199::-;;;;;;;;;;-1:-1:-1;8801:199:0;;;;;:::i;:::-;;:::i;22227:340::-;;;;;;;;;;-1:-1:-1;22227:340:0;;;;;:::i;:::-;;:::i;6801:33::-;;;;;;;;;;-1:-1:-1;6801:33:0;;;;-1:-1:-1;;;6801:33:0;;;;;;5841:36;;;;;;;;;;-1:-1:-1;5841:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10463:184;;;;;;;;;;-1:-1:-1;10463:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;10612:18:0;;;10580:7;10612:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10463:184;22602:340;;;;;;;;;;-1:-1:-1;22602:340:0;;;;;:::i;:::-;;:::i;22077:115::-;;;;;;;;;;-1:-1:-1;22077:115:0;;;;;:::i;:::-;;:::i;9168:149::-;;;;;;;;;;-1:-1:-1;9168:149:0;;;;;:::i;:::-;;:::i;21796:107::-;;;;;;;;;;-1:-1:-1;21796:107:0;;;;;:::i;:::-;;:::i;2600:244::-;;;;;;;;;;-1:-1:-1;2600:244:0;;;;;:::i;:::-;;:::i;15792:223::-;;;;;;;;;;;;;:::i;16027:169::-;2509:6;;-1:-1:-1;;;;;2509:6:0;1221:10;2509:22;2501:67;;;;-1:-1:-1;;;2501:67:0;;;;;;;:::i;:::-;;;;;;;;;16103:9:::1;16098:91;16122:5;:12;16118:1;:16;16098:91;;;16173:4;16156;:14;16161:5;16167:1;16161:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;16156:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;16156:14:0;:21;;-1:-1:-1;;16156:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16136:3;::::1;::::0;::::1;:::i;:::-;;;;16098:91;;;;16027:169:::0;:::o;9852:603::-;2509:6;;-1:-1:-1;;;;;2509:6:0;1221:10;2509:22;2501:67;;;;-1:-1:-1;;;2501:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9934:34:0;::::1;;::::0;;;:25:::1;:34;::::0;;;;;::::1;;9926:86;;;::::0;-1:-1:-1;;;9926:86:0;;14589:2:1;9926:86:0::1;::::0;::::1;14571:21:1::0;14628:2;14608:18;;;14601:30;14667:34;14647:18;;;14640:62;-1:-1:-1;;;14718:18:1;;;14711:37;14765:19;;9926:86:0::1;14387:403:1::0;9926:86:0::1;10028:9;10023:425;10047:23;:30:::0;10043:34;::::1;10023:425;;;10133:7;-1:-1:-1::0;;;;;10103:37:0::1;:23;10127:1;10103:26;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;10103:26:0::1;:37;10099:338;;;10190:23;10214:30:::0;;:34:::1;::::0;10247:1:::1;::::0;10214:34:::1;:::i;:::-;10190:59;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;10161:23:::1;:26:::0;;-1:-1:-1;;;;;10190:59:0;;::::1;::::0;10185:1;;10161:26;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:88:::0;;-1:-1:-1;;;;;;10161:88:0::1;-1:-1:-1::0;;;;;10161:88:0;;::::1;;::::0;;10268:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;10307:25:::1;:34:::0;;;;:42;;-1:-1:-1;;10307:42:0::1;::::0;;10368:23:::1;:29:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;10368:29:0;;;;;-1:-1:-1;;;;;;10368:29:0::1;::::0;;;;;16098:91:::1;16027:169:::0;:::o;10099:338::-:1;10079:3:::0;::::1;::::0;::::1;:::i;:::-;;;;10023:425;;10655:193:::0;10757:4;10779:39;1221:10;10802:7;10811:6;10779:8;:39::i;:::-;-1:-1:-1;10836:4:0;10655:193;;;;;:::o;10856:446::-;10988:4;11005:36;11015:6;11023:9;11034:6;11005:9;:36::i;:::-;11052:220;11075:6;1221:10;11123:138;11179:6;11123:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11123:19:0;;;;;;:11;:19;;;;;;;;1221:10;11123:33;;;;;;;;;;:37;:138::i;:::-;11052:8;:220::i;:::-;-1:-1:-1;11290:4:0;10856:446;;;;;:::o;9325:519::-;2509:6;;-1:-1:-1;;;;;2509:6:0;1221:10;2509:22;2501:67;;;;-1:-1:-1;;;2501:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9410:34:0;::::1;;::::0;;;:25:::1;:34;::::0;;;;;::::1;;9409:35;9401:75;;;::::0;-1:-1:-1;;;9401:75:0;;11010:2:1;9401:75:0::1;::::0;::::1;10992:21:1::0;11049:2;11029:18;;;11022:30;11088:29;11068:18;;;11061:57;11135:18;;9401:75:0::1;10808:351:1::0;9401:75:0::1;9495:23;:30:::0;9533:2:::1;::::0;9495:34:::1;::::0;9528:1:::1;9495:34;:::i;:::-;:40;;9487:130;;;::::0;-1:-1:-1;;;9487:130:0;;14997:2:1;9487:130:0::1;::::0;::::1;14979:21:1::0;15036:2;15016:18;;;15009:30;15075:34;15055:18;;;15048:62;15146:34;15126:18;;;15119:62;-1:-1:-1;;;15197:19:1;;;15190:44;15251:19;;9487:130:0::1;14795:481:1::0;9487:130:0::1;-1:-1:-1::0;;;;;9632:16:0;::::1;9651:1;9632:16:::0;;;:7:::1;:16;::::0;;;;;:20;9628:109:::1;;-1:-1:-1::0;;;;;9708:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;9688:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;9669:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;9628:109:::1;-1:-1:-1::0;;;;;9747:34:0::1;;::::0;;;:25:::1;:34;::::0;;;;:41;;-1:-1:-1;;9747:41:0::1;9784:4;9747:41:::0;;::::1;::::0;;;9799:23:::1;:37:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;9799:37:0::1;::::0;;::::1;::::0;;9325:519::o;9008:152::-;2509:6;;-1:-1:-1;;;;;2509:6:0;1221:10;2509:22;2501:67;;;;-1:-1:-1;;;2501:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9079:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:34;;-1:-1:-1;;9079:34:0::1;9109:4;9079:34;::::0;;9129:23;;5098:51:1;;;9129:23:0::1;::::0;5071:18:1;9129:23:0::1;;;;;;;;9008:152:::0;:::o;15592:192::-;15658:12;;-1:-1:-1;;;;;15658:12:0;1221:10;-1:-1:-1;;;;;15642:28:0;;15634:37;;;;;;15682:23;15708:24;15726:4;15708:9;:24::i;:::-;15682:50;;15743:33;15760:15;15743:16;:33::i;:::-;15623:161;15592:192::o;21911:132::-;2509:6;;-1:-1:-1;;;;;2509:6:0;1221:10;2509:22;2501:67;;;;-1:-1:-1;;;2501:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21998:30:0;;;::::1;;::::0;;;:22:::1;:30;::::0;;;;:37;;-1:-1:-1;;21998:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21911:132::o;20501:1065::-;20605:4;2509:6;;-1:-1:-1;;;;;2509:6:0;1221:10;2509:22;2501:67;;;;-1:-1:-1;;;2501:67:0;;;;;;;:::i;:::-;20630:13:::1;::::0;-1:-1:-1;;;20630:13:0;::::1;;;20629:14;20621:70;;;::::0;-1:-1:-1;;;20621:70:0;;14177:2:1;20621:70:0::1;::::0;::::1;14159:21:1::0;14216:2;14196:18;;;14189:30;14255:34;14235:18;;;14228:62;-1:-1:-1;;;14306:18:1;;;14299:41;14357:19;;20621:70:0::1;13975:407:1::0;20621:70:0::1;20734:3;20710:14;:21;:27;20702:94;;;::::0;-1:-1:-1;;;20702:94:0;;7543:2:1;20702:94:0::1;::::0;::::1;7525:21:1::0;7582:2;7562:18;;;7555:30;7621:34;7601:18;;;7594:62;-1:-1:-1;;;7672:18:1;;;7665:52;7734:19;;20702:94:0::1;7341:418:1::0;20702:94:0::1;20833:9;20829:205;20852:14;:21;20848:1;:25;20829:205;;;20894:14;20911;20926:1;20911:17;;;;;;;;:::i;:::-;;;;;;;20894:34;;20943:14;20960:7;20968:1;20960:10;;;;;;;;:::i;:::-;;;;;;;20943:27;;20985:37;20995:10;21007:6;21015;20985:9;:37::i;:::-;20879:155;;20875:3;;;;;:::i;:::-;;;;20829:205;;;;21044:15;:13;:15::i;:::-;21127:42;21181:55;21127:42:::0;21231:4:::1;21181:22;:55::i;:::-;21247:15;:34:::0;;-1:-1:-1;;;;;;21247:34:0::1;-1:-1:-1::0;;;;;21247:34:0;::::1;::::0;;::::1;::::0;;;21292:58:::1;::::0;21309:4:::1;::::0;5703:16:::1;21292:8;:58::i;:::-;21395:16;-1:-1:-1::0;;;;;21395:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21377:56:0::1;;21442:4;21449:16;-1:-1:-1::0;;;;;21449:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21377:96;::::0;-1:-1:-1;;;;;;21377:96:0::1;::::0;;;;;;-1:-1:-1;;;;;5830:15:1;;;21377:96:0::1;::::0;::::1;5812:34:1::0;5882:15;;5862:18;;;5855:43;5747:18;;21377:96:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21361:13;:112:::0;;-1:-1:-1;;;;;;21361:112:0::1;-1:-1:-1::0;;;;;21361:112:0;;;::::1;::::0;;::::1;::::0;;21484:52:::1;::::0;-1:-1:-1;21484:22:0::1;:52::i;16204:92::-:0;2509:6;;-1:-1:-1;;;;;2509:6:0;1221:10;2509:22;2501:67;;;;-1:-1:-1;;;2501:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16268:12:0::1;16283:5;16268:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;16268:20:0::1;::::0;;16204:92::o;8655:138::-;-1:-1:-1;;;;;8768:16:0;;8721:7;8768:16;;;:7;:16;;;;;;8748:37;;:19;:37::i;21618:139::-;2509:6;;-1:-1:-1;;;;;2509:6:0;1221:10;2509:22;2501:67;;;;-1:-1:-1;;;2501:67:0;;;;;;;:::i;:::-;21709:19:::1;:40:::0;21618:139::o;19743:599::-;2509:6;;-1:-1:-1;;;;;2509:6:0;1221:10;2509:22;2501:67;;;;-1:-1:-1;;;2501:67:0;;;;;;;:::i;:::-;19887:19:::1;:40:::0;;;19938:12:::1;:26:::0;;;19985:20:::1;:42:::0;;;20038:13:::1;:28:::0;;;20133:2:::1;20095:34;19953:11:::0;19909:18;20095:34:::1;:::i;:::-;:40;;20087:82;;;::::0;-1:-1:-1;;;20087:82:0;;15483:2:1;20087:82:0::1;::::0;::::1;15465:21:1::0;15522:2;15502:18;;;15495:30;15561:31;15541:18;;;15534:59;15610:18;;20087:82:0::1;15281:353:1::0;20087:82:0::1;20263:2;20246:13;;20223:20;;:36;;;;:::i;:::-;:42;;20215:84;;;::::0;-1:-1:-1;;;20215:84:0;;15483:2:1;20215:84:0::1;::::0;::::1;15465:21:1::0;15522:2;15502:18;;;15495:30;15561:31;15541:18;;;15534:59;15610:18;;20215:84:0::1;15281:353:1::0;20215:84:0::1;19743:599:::0;;;;:::o;8801:199::-;8906:4;8928:42;1221:10;8952:9;8963:6;8928:9;:42::i;22227:340::-;2509:6;;-1:-1:-1;;;;;2509:6:0;1221:10;2509:22;2501:67;;;;-1:-1:-1;;;2501:67:0;;;;;;;:::i;:::-;22311:12:::1;::::0;-1:-1:-1;;;;;22311:12:0::1;22303:63;;;::::0;-1:-1:-1;;;22303:63:0;;10657:2:1;22303:63:0::1;::::0;::::1;10639:21:1::0;10696:2;10676:18;;;10669:30;10735:26;10715:18;;;10708:54;10779:18;;22303:63:0::1;10455:348:1::0;22303:63:0::1;-1:-1:-1::0;;;;;22377:31:0;;::::1;22411:5;22377:31:::0;;;:18:::1;:31;::::0;;;;;;;:39;;-1:-1:-1;;22377:39:0;;::::1;::::0;;;22449:12:::1;::::0;;;::::1;22473:31:::0;;;;;;;:38;;;;::::1;-1:-1:-1::0;22473:38:0::1;::::0;;;22546:12;22527:32;;22546:12;::::1;5098:51:1::0;;22449:12:0;;22527:32:::1;::::0;5071:18:1;22527:32:0::1;4952:203:1::0;22602:340:0;2509:6;;-1:-1:-1;;;;;2509:6:0;1221:10;2509:22;2501:67;;;;-1:-1:-1;;;2501:67:0;;;;;;;:::i;:::-;22686:12:::1;::::0;-1:-1:-1;;;;;22686:12:0::1;22678:63;;;::::0;-1:-1:-1;;;22678:63:0;;7966:2:1;22678:63:0::1;::::0;::::1;7948:21:1::0;8005:2;7985:18;;;7978:30;8044:26;8024:18;;;8017:54;8088:18;;22678:63:0::1;7764:348:1::0;22678:63:0::1;-1:-1:-1::0;;;;;22752:31:0;;::::1;22786:5;22752:31:::0;;;:18:::1;:31;::::0;;;;;;;:39;;-1:-1:-1;;22752:39:0;;::::1;::::0;;;22824:12:::1;::::0;;;::::1;22848:31:::0;;;;;;;:38;;;;::::1;-1:-1:-1::0;22848:38:0::1;::::0;;;22921:12;22902:32;;22921:12;::::1;5098:51:1::0;;22824:12:0;;22902:32:::1;::::0;5071:18:1;22902:32:0::1;4952:203:1::0;22077:115:0;2509:6;;-1:-1:-1;;;;;2509:6:0;1221:10;2509:22;2501:67;;;;-1:-1:-1;;;2501:67:0;;;;;;;:::i;:::-;22154:14:::1;:30:::0;22077:115::o;9168:149::-;2509:6;;-1:-1:-1;;;;;2509:6:0;1221:10;2509:22;2501:67;;;;-1:-1:-1;;;2501:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9237:27:0;::::1;9267:5;9237:27:::0;;;:18:::1;:27;::::0;;;;;;;;:35;;-1:-1:-1;;9237:35:0::1;::::0;;9288:21;;5098:51:1;;;9288:21:0::1;::::0;5071:18:1;9288:21:0::1;4952:203:1::0;21796:107:0;2509:6;;-1:-1:-1;;;;;2509:6:0;1221:10;2509:22;2501:67;;;;-1:-1:-1;;;2501:67:0;;;;;;;:::i;:::-;21869:12:::1;:26:::0;21796:107::o;2600:244::-;2509:6;;-1:-1:-1;;;;;2509:6:0;1221:10;2509:22;2501:67;;;;-1:-1:-1;;;2501:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2689:22:0;::::1;2681:73;;;::::0;-1:-1:-1;;;2681:73:0;;9087:2:1;2681:73:0::1;::::0;::::1;9069:21:1::0;9126:2;9106:18;;;9099:30;9165:34;9145:18;;;9138:62;-1:-1:-1;;;9216:18:1;;;9209:36;9262:19;;2681:73:0::1;8885:402:1::0;2681:73:0::1;2791:6;::::0;;2770:38:::1;::::0;-1:-1:-1;;;;;2770:38:0;;::::1;::::0;2791:6;::::1;::::0;2770:38:::1;::::0;::::1;2819:6;:17:::0;;-1:-1:-1;;;;;;2819:17:0::1;-1:-1:-1::0;;;;;2819:17:0;;;::::1;::::0;;;::::1;::::0;;2600:244::o;15792:223::-;15858:12;;-1:-1:-1;;;;;15858:12:0;1221:10;-1:-1:-1;;;;;15842:28:0;;:60;;;-1:-1:-1;15890:12:0;;-1:-1:-1;;;;;15890:12:0;1221:10;-1:-1:-1;;;;;15874:28:0;;15842:60;15834:69;;;;;;15943:21;15975:32;15943:21;15975:12;:32::i;12035:369::-;-1:-1:-1;;;;;12162:19:0;;12154:68;;;;-1:-1:-1;;;12154:68:0;;13772:2:1;12154:68:0;;;13754:21:1;13811:2;13791:18;;;13784:30;13850:34;13830:18;;;13823:62;-1:-1:-1;;;13901:18:1;;;13894:34;13945:19;;12154:68:0;13570:400:1;12154:68:0;-1:-1:-1;;;;;12241:21:0;;12233:68;;;;-1:-1:-1;;;12233:68:0;;9494:2:1;12233:68:0;;;9476:21:1;9533:2;9513:18;;;9506:30;9572:34;9552:18;;;9545:62;-1:-1:-1;;;9623:18:1;;;9616:32;9665:19;;12233:68:0;9292:398:1;12233:68:0;-1:-1:-1;;;;;12312:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12364:32;;15785:25:1;;;12364:32:0;;15758:18:1;12364:32:0;;;;;;;12035:369;;;:::o;12412:2523::-;-1:-1:-1;;;;;12534:18:0;;12526:68;;;;-1:-1:-1;;;12526:68:0;;12962:2:1;12526:68:0;;;12944:21:1;13001:2;12981:18;;;12974:30;13040:34;13020:18;;;13013:62;-1:-1:-1;;;13091:18:1;;;13084:35;13136:19;;12526:68:0;12760:401:1;12526:68:0;-1:-1:-1;;;;;12613:16:0;;12605:64;;;;-1:-1:-1;;;12605:64:0;;7139:2:1;12605:64:0;;;7121:21:1;7178:2;7158:18;;;7151:30;7217:34;7197:18;;;7190:62;-1:-1:-1;;;7268:18:1;;;7261:33;7311:19;;12605:64:0;6937:399:1;12605:64:0;12697:1;12688:6;:10;12680:64;;;;-1:-1:-1;;;12680:64:0;;12552:2:1;12680:64:0;;;12534:21:1;12591:2;12571:18;;;12564:30;12630:34;12610:18;;;12603:62;-1:-1:-1;;;12681:18:1;;;12674:39;12730:19;;12680:64:0;12350:405:1;12680:64:0;2420:7;2447:6;-1:-1:-1;;;;;12761:15:0;;;2447:6;;12761:15;;;;:32;;-1:-1:-1;2420:7:0;2447:6;-1:-1:-1;;;;;12780:13:0;;;2447:6;;12780:13;;12761:32;12757:1197;;;12862:13;;-1:-1:-1;;;12862:13:0;;;;12857:431;;12916:13;;-1:-1:-1;;;;;12910:19:0;;;12916:13;;12910:19;;;;:53;;-1:-1:-1;12947:15:0;;-1:-1:-1;;;;;12933:30:0;;;12947:15;;12933:30;;12910:53;:81;;;;-1:-1:-1;;;;;;12969:22:0;;;;;;:18;:22;;;;;;;;12967:24;12910:81;12907:381;;;13045:14;;13036:6;13020:13;13030:2;13020:9;:13::i;:::-;:22;;;;:::i;:::-;:39;13012:87;;;;-1:-1:-1;;;13012:87:0;;13368:2:1;13012:87:0;;;13350:21:1;13407:2;13387:18;;;13380:30;13446:34;13426:18;;;13419:62;-1:-1:-1;;;13497:18:1;;;13490:33;13540:19;;13012:87:0;13166:399:1;13012:87:0;13136:12;;13126:6;:22;;13118:63;;;;-1:-1:-1;;;13118:63:0;;8730:2:1;13118:63:0;;;8712:21:1;8769:2;8749:18;;;8742:30;8808;8788:18;;;8781:58;8856:18;;13118:63:0;8528:352:1;13118:63:0;-1:-1:-1;;;;;13209:10:0;;;;;;:4;:10;;;;;;;;13208:11;:24;;;;-1:-1:-1;;;;;;13224:8:0;;;;;;:4;:8;;;;;;;;13223:9;13208:24;13200:72;;;;-1:-1:-1;;;13200:72:0;;9897:2:1;13200:72:0;;;9879:21:1;9936:2;9916:18;;;9909:30;9975:34;9955:18;;;9948:62;-1:-1:-1;;;10026:18:1;;;10019:33;10069:19;;13200:72:0;9695:399:1;13200:72:0;13316:28;13347:24;13365:4;13347:9;:24::i;:::-;13425:19;;13488:12;;13316:55;;-1:-1:-1;13401:43:0;;;;13464:36;;13461:124;;13557:12;;13534:35;;13461:124;13617:7;:18;;;;-1:-1:-1;13629:6:0;;-1:-1:-1;;;13629:6:0;;;;13628:7;13617:18;:43;;;;-1:-1:-1;13647:13:0;;-1:-1:-1;;;;;13639:21:0;;;13647:13;;13639:21;;13617:43;:58;;;;-1:-1:-1;13664:11:0;;-1:-1:-1;;;13664:11:0;;;;13617:58;13613:330;;;13696:38;13713:20;13696:16;:38::i;:::-;13782:21;13826:22;;13822:106;;13873:35;13886:21;13873:12;:35::i;:::-;13677:266;13613:330;12795:1159;;12757:1197;-1:-1:-1;;;;;14038:24:0;;13974:12;14038:24;;;:18;:24;;;;;;13989:4;;14038:24;;;:50;;-1:-1:-1;;;;;;14066:22:0;;;;;;:18;:22;;;;;;;;14038:50;14037:102;;;-1:-1:-1;14102:13:0;;-1:-1:-1;;;;;14094:21:0;;;14102:13;;14094:21;;;;:44;;-1:-1:-1;14125:13:0;;-1:-1:-1;;;;;14119:19:0;;;14125:13;;14119:19;;14094:44;14033:841;;;-1:-1:-1;14166:5:0;14033:841;;;14261:13;;-1:-1:-1;;;;;14253:21:0;;;14261:13;;14253:21;:55;;;;-1:-1:-1;14292:15:0;;-1:-1:-1;;;;;14278:30:0;;;14292:15;;14278:30;;14253:55;14250:172;;;14346:19;;14329:14;:36;14394:12;;14384:7;:22;14250:172;-1:-1:-1;;;;;14480:24:0;;;;;;:18;:24;;;;;;;;14475:167;;14551:12;;14541:6;:22;;14533:89;;;;-1:-1:-1;;;14533:89:0;;11366:2:1;14533:89:0;;;11348:21:1;11405:2;11385:18;;;11378:30;11444:34;11424:18;;;11417:62;-1:-1:-1;;;11495:18:1;;;11488:52;11557:19;;14533:89:0;11164:418:1;14533:89:0;14684:13;;-1:-1:-1;;;;;14678:19:0;;;14684:13;;14678:19;:55;;;;-1:-1:-1;14717:15:0;;-1:-1:-1;;;;;14701:32:0;;;14717:15;;14701:32;;14678:55;14674:175;;;14771:20;;14754:14;:37;14820:13;;14810:7;:23;14674:175;14886:41;14901:4;14907:2;14911:6;14919:7;14886:14;:41::i;3212:224::-;3332:7;3368:12;3360:6;;;;3352:29;;;;-1:-1:-1;;;3352:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3392:9:0;3404:5;3408:1;3404;:5;:::i;:::-;3392:17;3212:224;-1:-1:-1;;;;;3212:224:0:o;11310:323::-;11405:7;11463;;11452;:18;;11430:110;;;;-1:-1:-1;;;11430:110:0;;8319:2:1;11430:110:0;;;8301:21:1;8358:2;8338:18;;;8331:30;8397:34;8377:18;;;8370:62;-1:-1:-1;;;8448:18:1;;;8441:40;8498:19;;11430:110:0;8117:406:1;11430:110:0;11551:19;11573:10;:8;:10::i;:::-;11551:32;-1:-1:-1;11601:24:0;:7;11551:32;11601:11;:24::i;:::-;11594:31;11310:323;-1:-1:-1;;;11310:323:0:o;14945:483::-;7610:6;:13;;-1:-1:-1;;;;7610:13:0;-1:-1:-1;;;7610:13:0;;;15047:16:::1;::::0;;15061:1:::1;15047:16:::0;;;;;::::1;::::0;;-1:-1:-1;;15047:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15047:16:0::1;15023:40;;15092:4;15074;15079:1;15074:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15074:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;15118:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;15118:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;15074:7;;15118:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15108:4;15113:1;15108:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15108:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;15183:15:::1;::::0;15151:62:::1;::::0;15168:4:::1;::::0;15183:15:::1;15201:11:::0;15151:8:::1;:62::i;:::-;15224:15;::::0;:196:::1;::::0;-1:-1:-1;;;15224:196:0;;-1:-1:-1;;;;;15224:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;15305:11;;15224:15:::1;::::0;15347:4;;15374::::1;::::0;15394:15:::1;::::0;15224:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;7646:6:0;:14;;-1:-1:-1;;;;7646:14:0;;;-1:-1:-1;;;;14945:483:0:o;20398:91::-;2509:6;;-1:-1:-1;;;;;2509:6:0;1221:10;2509:22;2501:67;;;;-1:-1:-1;;;2501:67:0;;;;;;;:::i;:::-;20453:13:::1;:20:::0;;-1:-1:-1;;;;20453:20:0::1;-1:-1:-1::0;;;20453:20:0::1;::::0;;20398:91::o;15436:148::-;15493:12;;-1:-1:-1;;;;;15493:12:0;:36;15515:13;:6;15526:1;15515:10;:13::i;:::-;15493:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15540:12:0;;-1:-1:-1;;;;;15540:12:0;:36;15562:13;:6;15573:1;15562:10;:13::i;:::-;15540:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16304:282;16460:7;16455:28;;16469:14;:12;:14::i;:::-;16494:44;16512:6;16520:9;16531:6;16494:17;:44::i;:::-;16554:7;16549:29;;16563:15;11961:22;;11944:14;:39;12004:15;;11994:7;:25;11900:127;19294:166;19336:7;19357:15;19374;19393:19;:17;:19::i;:::-;19356:56;;-1:-1:-1;19356:56:0;-1:-1:-1;19432:20:0;19356:56;;19432:11;:20::i;:::-;19425:27;;;;19294:166;:::o;3698:132::-;3756:7;3783:39;3787:1;3790;3783:39;;;;;;;;;;;;;;;;;:3;:39::i;11641:251::-;11688:14;;:19;:35;;;;-1:-1:-1;11711:7:0;;:12;11688:35;11684:48;;;11641:251::o;11684:48::-;11773:14;;;11748:22;:39;11816:7;;;11798:15;:25;-1:-1:-1;11844:18:0;;;;11873:11;11641:251::o;16594:610::-;16741:15;16771:23;16809:12;16836:23;16874:12;16901:13;16928:19;16939:7;16928:10;:19::i;:::-;-1:-1:-1;;;;;16976:15:0;;;;;;:7;:15;;;;;;16726:221;;-1:-1:-1;16726:221:0;;-1:-1:-1;16726:221:0;;-1:-1:-1;16726:221:0;-1:-1:-1;16726:221:0;-1:-1:-1;16726:221:0;-1:-1:-1;16976:28:0;;16726:221;16976:19;:28::i;:::-;-1:-1:-1;;;;;16958:15:0;;;;;;;:7;:15;;;;;;:46;;;;17036:18;;;;;;;:39;;17059:15;17036:22;:39::i;:::-;-1:-1:-1;;;;;17015:18:0;;;;;;:7;:18;;;;;:60;17086:16;17096:5;17086:9;:16::i;:::-;17113:23;17125:4;17131;17113:11;:23::i;:::-;17169:9;-1:-1:-1;;;;;17152:44:0;17161:6;-1:-1:-1;;;;;17152:44:0;;17180:15;17152:44;;;;15785:25:1;;15773:2;15758:18;;15639:177;17152:44:0;;;;;;;;16715:489;;;;;;16594:610;;;:::o;19468:263::-;19566:7;;19519;;;;5703:16;19634:20;19566:7;5703:16;19634:11;:20::i;:::-;19624:7;:30;19620:61;;;-1:-1:-1;;19664:7:0;;;5703:16;;-1:-1:-1;19468:263:0;-1:-1:-1;19468:263:0:o;19620:61::-;19706:7;;19715;;-1:-1:-1;19468:263:0;-1:-1:-1;19468:263:0:o;3838:223::-;3958:7;3993:12;3986:5;3978:28;;;;-1:-1:-1;;;3978:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4017:9:0;4029:5;4033:1;4029;:5;:::i;17623:630::-;17723:7;17745;17767;17789;17811;17833;17869:23;17894:12;17908:13;17938:45;17950:7;17959:14;;17975:7;;17938:11;:45::i;:::-;17868:115;;;;;;17994:19;18016:10;:8;:10::i;:::-;17994:32;;18038:15;18055:23;18080:12;18109:46;18121:7;18130:4;18136:5;18143:11;18109;:46::i;:::-;18037:118;;-1:-1:-1;18037:118:0;-1:-1:-1;18037:118:0;-1:-1:-1;18216:15:0;;-1:-1:-1;18233:4:0;;-1:-1:-1;18239:5:0;;-1:-1:-1;;;;;17623:630:0;;;;;;;:::o;3068:136::-;3126:7;3153:43;3157:1;3160;3153:43;;;;;;;;;;;;;;;;;:3;:43::i;2881:179::-;2939:7;;2971:5;2975:1;2971;:5;:::i;:::-;2959:17;;3000:1;2995;:6;;2987:46;;;;-1:-1:-1;;;2987:46:0;;10301:2:1;2987:46:0;;;10283:21:1;10340:2;10320:18;;;10313:30;10379:29;10359:18;;;10352:57;10426:18;;2987:46:0;10099:351:1;17212:211:0;17265:19;17287:10;:8;:10::i;:::-;17265:32;-1:-1:-1;17308:13:0;17324:22;:5;17265:32;17324:9;:22::i;:::-;17398:4;17382:22;;;;:7;:22;;;;;;17308:38;;-1:-1:-1;17382:33:0;;17308:38;17382:26;:33::i;:::-;17373:4;17357:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;17212:211:0:o;17431:147::-;17509:7;;:17;;17521:4;17509:11;:17::i;:::-;17499:7;:27;17550:10;;:20;;17565:4;17550:14;:20::i;:::-;17537:10;:33;-1:-1:-1;;17431:147:0:o;18261:481::-;18435:7;;;;18529:35;18560:3;18529:26;:7;18541:13;18529:11;:26::i;:::-;:30;;:35::i;:::-;18514:50;-1:-1:-1;18575:13:0;18591:28;18615:3;18591:19;:7;18603:6;18591:11;:19::i;:28::-;18575:44;-1:-1:-1;18630:23:0;18656:28;18575:44;18656:17;:7;18668:4;18656:11;:17::i;:::-;:21;;:28::i;:::-;18630:54;18722:4;;-1:-1:-1;18728:5:0;;-1:-1:-1;18261:481:0;;-1:-1:-1;;;;;18261:481:0:o;18750:536::-;18944:7;;;;19041:24;:7;19053:11;19041;:24::i;:::-;19023:42;-1:-1:-1;19076:12:0;19091:21;:4;19100:11;19091:8;:21::i;:::-;19076:36;-1:-1:-1;19123:13:0;19139:22;:5;19149:11;19139:9;:22::i;:::-;19123:38;-1:-1:-1;19172:23:0;19198:28;19123:38;19198:17;:7;19210:4;19198:11;:17::i;:28::-;19247:7;;;;-1:-1:-1;19273:4:0;;-1:-1:-1;18750:536:0;;-1:-1:-1;;;;;;;18750:536:0:o;3444:246::-;3502:7;3526:6;3522:47;;-1:-1:-1;3556:1:0;3549:8;;3522:47;3579:9;3591:5;3595:1;3591;:5;:::i;:::-;3579:17;-1:-1:-1;3624:1:0;3615:5;3619:1;3579:17;3615:5;:::i;:::-;:10;3607:56;;;;-1:-1:-1;;;3607:56:0;;11789:2:1;3607:56:0;;;11771:21:1;11828:2;11808:18;;;11801:30;11867:34;11847:18;;;11840:62;-1:-1:-1;;;11918:18:1;;;11911:31;11959:19;;3607:56:0;11587:397:1;14:748;68:5;121:3;114:4;106:6;102:17;98:27;88:55;;139:1;136;129:12;88:55;175:6;162:20;201:4;225:60;241:43;281:2;241:43;:::i;:::-;225:60;:::i;:::-;307:3;331:2;326:3;319:15;359:2;354:3;350:12;343:19;;394:2;386:6;382:15;446:3;441:2;435;432:1;428:10;420:6;416:23;412:32;409:41;406:61;;;463:1;460;453:12;406:61;485:1;495:238;509:2;506:1;503:9;495:238;;;580:3;567:17;597:31;622:5;597:31;:::i;:::-;641:18;;679:12;;;;711;;;;527:1;520:9;495:238;;;-1:-1:-1;751:5:1;;14:748;-1:-1:-1;;;;;;;14:748:1:o;767:247::-;826:6;879:2;867:9;858:7;854:23;850:32;847:52;;;895:1;892;885:12;847:52;934:9;921:23;953:31;978:5;953:31;:::i;1019:251::-;1089:6;1142:2;1130:9;1121:7;1117:23;1113:32;1110:52;;;1158:1;1155;1148:12;1110:52;1190:9;1184:16;1209:31;1234:5;1209:31;:::i;1275:388::-;1343:6;1351;1404:2;1392:9;1383:7;1379:23;1375:32;1372:52;;;1420:1;1417;1410:12;1372:52;1459:9;1446:23;1478:31;1503:5;1478:31;:::i;:::-;1528:5;-1:-1:-1;1585:2:1;1570:18;;1557:32;1598:33;1557:32;1598:33;:::i;:::-;1650:7;1640:17;;;1275:388;;;;;:::o;1668:456::-;1745:6;1753;1761;1814:2;1802:9;1793:7;1789:23;1785:32;1782:52;;;1830:1;1827;1820:12;1782:52;1869:9;1856:23;1888:31;1913:5;1888:31;:::i;:::-;1938:5;-1:-1:-1;1995:2:1;1980:18;;1967:32;2008:33;1967:32;2008:33;:::i;:::-;1668:456;;2060:7;;-1:-1:-1;;;2114:2:1;2099:18;;;;2086:32;;1668:456::o;2129:416::-;2194:6;2202;2255:2;2243:9;2234:7;2230:23;2226:32;2223:52;;;2271:1;2268;2261:12;2223:52;2310:9;2297:23;2329:31;2354:5;2329:31;:::i;:::-;2379:5;-1:-1:-1;2436:2:1;2421:18;;2408:32;2478:15;;2471:23;2459:36;;2449:64;;2509:1;2506;2499:12;2550:315;2618:6;2626;2679:2;2667:9;2658:7;2654:23;2650:32;2647:52;;;2695:1;2692;2685:12;2647:52;2734:9;2721:23;2753:31;2778:5;2753:31;:::i;:::-;2803:5;2855:2;2840:18;;;;2827:32;;-1:-1:-1;;;2550:315:1:o;2870:348::-;2954:6;3007:2;2995:9;2986:7;2982:23;2978:32;2975:52;;;3023:1;3020;3013:12;2975:52;3063:9;3050:23;3096:18;3088:6;3085:30;3082:50;;;3128:1;3125;3118:12;3082:50;3151:61;3204:7;3195:6;3184:9;3180:22;3151:61;:::i;:::-;3141:71;2870:348;-1:-1:-1;;;;2870:348:1:o;3223:1149::-;3341:6;3349;3402:2;3390:9;3381:7;3377:23;3373:32;3370:52;;;3418:1;3415;3408:12;3370:52;3458:9;3445:23;3487:18;3528:2;3520:6;3517:14;3514:34;;;3544:1;3541;3534:12;3514:34;3567:61;3620:7;3611:6;3600:9;3596:22;3567:61;:::i;:::-;3557:71;;3647:2;3637:12;;3702:2;3691:9;3687:18;3674:32;3731:2;3721:8;3718:16;3715:36;;;3747:1;3744;3737:12;3715:36;3770:24;;;-1:-1:-1;3825:4:1;3817:13;;3813:27;-1:-1:-1;3803:55:1;;3854:1;3851;3844:12;3803:55;3890:2;3877:16;3913:60;3929:43;3969:2;3929:43;:::i;3913:60::-;3995:3;4019:2;4014:3;4007:15;4047:2;4042:3;4038:12;4031:19;;4078:2;4074;4070:11;4126:7;4121:2;4115;4112:1;4108:10;4104:2;4100:19;4096:28;4093:41;4090:61;;;4147:1;4144;4137:12;4090:61;4169:1;4160:10;;4179:163;4193:2;4190:1;4187:9;4179:163;;;4250:17;;4238:30;;4211:1;4204:9;;;;;4288:12;;;;4320;;4179:163;;;4183:3;4361:5;4351:15;;;;;;;3223:1149;;;;;:::o;4377:180::-;4436:6;4489:2;4477:9;4468:7;4464:23;4460:32;4457:52;;;4505:1;4502;4495:12;4457:52;-1:-1:-1;4528:23:1;;4377:180;-1:-1:-1;4377:180:1:o;4562:385::-;4648:6;4656;4664;4672;4725:3;4713:9;4704:7;4700:23;4696:33;4693:53;;;4742:1;4739;4732:12;4693:53;-1:-1:-1;;4765:23:1;;;4835:2;4820:18;;4807:32;;-1:-1:-1;4886:2:1;4871:18;;4858:32;;4937:2;4922:18;4909:32;;-1:-1:-1;4562:385:1;-1:-1:-1;4562:385:1:o;6335:597::-;6447:4;6476:2;6505;6494:9;6487:21;6537:6;6531:13;6580:6;6575:2;6564:9;6560:18;6553:34;6605:1;6615:140;6629:6;6626:1;6623:13;6615:140;;;6724:14;;;6720:23;;6714:30;6690:17;;;6709:2;6686:26;6679:66;6644:10;;6615:140;;;6773:6;6770:1;6767:13;6764:91;;;6843:1;6838:2;6829:6;6818:9;6814:22;6810:31;6803:42;6764:91;-1:-1:-1;6916:2:1;6895:15;-1:-1:-1;;6891:29:1;6876:45;;;;6923:2;6872:54;;6335:597;-1:-1:-1;;;6335:597:1:o;11989:356::-;12191:2;12173:21;;;12210:18;;;12203:30;12269:34;12264:2;12249:18;;12242:62;12336:2;12321:18;;11989:356::o;15821:980::-;16083:4;16131:3;16120:9;16116:19;16162:6;16151:9;16144:25;16188:2;16226:6;16221:2;16210:9;16206:18;16199:34;16269:3;16264:2;16253:9;16249:18;16242:31;16293:6;16328;16322:13;16359:6;16351;16344:22;16397:3;16386:9;16382:19;16375:26;;16436:2;16428:6;16424:15;16410:29;;16457:1;16467:195;16481:6;16478:1;16475:13;16467:195;;;16546:13;;-1:-1:-1;;;;;16542:39:1;16530:52;;16637:15;;;;16602:12;;;;16578:1;16496:9;16467:195;;;-1:-1:-1;;;;;;;16718:32:1;;;;16713:2;16698:18;;16691:60;-1:-1:-1;;;16782:3:1;16767:19;16760:35;16679:3;15821:980;-1:-1:-1;;;15821:980:1:o;16995:275::-;17066:2;17060:9;17131:2;17112:13;;-1:-1:-1;;17108:27:1;17096:40;;17166:18;17151:34;;17187:22;;;17148:62;17145:88;;;17213:18;;:::i;:::-;17249:2;17242:22;16995:275;;-1:-1:-1;16995:275:1:o;17275:183::-;17335:4;17368:18;17360:6;17357:30;17354:56;;;17390:18;;:::i;:::-;-1:-1:-1;17435:1:1;17431:14;17447:4;17427:25;;17275:183::o;17463:128::-;17503:3;17534:1;17530:6;17527:1;17524:13;17521:39;;;17540:18;;:::i;:::-;-1:-1:-1;17576:9:1;;17463:128::o;17596:217::-;17636:1;17662;17652:132;;17706:10;17701:3;17697:20;17694:1;17687:31;17741:4;17738:1;17731:15;17769:4;17766:1;17759:15;17652:132;-1:-1:-1;17798:9:1;;17596:217::o;17818:168::-;17858:7;17924:1;17920;17916:6;17912:14;17909:1;17906:21;17901:1;17894:9;17887:17;17883:45;17880:71;;;17931:18;;:::i;:::-;-1:-1:-1;17971:9:1;;17818:168::o;17991:125::-;18031:4;18059:1;18056;18053:8;18050:34;;;18064:18;;:::i;:::-;-1:-1:-1;18101:9:1;;17991:125::o;18121:135::-;18160:3;-1:-1:-1;;18181:17:1;;18178:43;;;18201:18;;:::i;:::-;-1:-1:-1;18248:1:1;18237:13;;18121:135::o;18261:127::-;18322:10;18317:3;18313:20;18310:1;18303:31;18353:4;18350:1;18343:15;18377:4;18374:1;18367:15;18393:127;18454:10;18449:3;18445:20;18442:1;18435:31;18485:4;18482:1;18475:15;18509:4;18506:1;18499:15;18525:127;18586:10;18581:3;18577:20;18574:1;18567:31;18617:4;18614:1;18607:15;18641:4;18638:1;18631:15;18657:127;18718:10;18713:3;18709:20;18706:1;18699:31;18749:4;18746:1;18739:15;18773:4;18770:1;18763:15;18789:131;-1:-1:-1;;;;;18864:31:1;;18854:42;;18844:70;;18910:1;18907;18900:12

Swarm Source

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