ETH Price: $3,091.07 (+0.96%)
Gas: 5 Gwei

Token

SURGE (SRG)
 

Overview

Max Total Supply

100,000,000 SRG

Holders

491 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
wakame.eth
Balance
50,000 SRG

Value
$0.00
0x07921846b663d510da925e1af5432d4cfe681412
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Surge is a DeFi protocol that stores its liquidity pool inside of the smart contract itself allowing trading without trading fees and an unextractable LP. Buying and selling can be done directly on the blockchain explorer by using the first two functions accordingly.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SURGE

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license, Audited

Contract Source Code (Solidity)Audit Report

/**
 *Submitted for verification at Etherscan.io on 2023-01-12
*/

//SPDX-License-Identifier: MIT

/**
 * Contract: Surge Token
 * Developed by: Heisenman
 * Team: t.me/ALBINO_RHINOOO, t.me/Heisenman, t.me/STFGNZ
 * Trade without dex fees. $SURGE is the inception of the next generation of decentralized protocols.
 * Socials:
 * TG: https://t.me/SURGEPROTOCOL
 * Website: https://surgeprotocol.io/
 * Twitter: https://twitter.com/SURGEPROTOCOL
 */

pragma solidity 0.8.17;

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

interface IPancakePair {
    function token0() external view returns (address);

    function token1() external view returns (address);

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

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

    function decimals() external view returns (uint8);
}

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

contract SURGE is IERC20, Context, Ownable, ReentrancyGuard {
    event Bought(
        address indexed from,
        address indexed to,
        uint256 tokens,
        uint256 beans,
        uint256 dollarBuy
    );
    event Sold(
        address indexed from,
        address indexed to,
        uint256 tokens,
        uint256 beans,
        uint256 dollarSell
    );
    event FeesMulChanged(uint256 newBuyMul, uint256 newSellMul);
    event StablePairChanged(address newStablePair, address newStableToken);
    event MaxBagChanged(uint256 newMaxBag);

    // token data
    string private constant _name = "SURGE";
    string private constant _symbol = "SRG";
    uint8 private constant _decimals = 9;
    uint256 private constant _decMultiplier = 10**_decimals;

    // Total Supply
    uint256 public constant _totalSupply = 10**8 * _decMultiplier;

    // balances
    mapping(address => uint256) public _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;

    //Fees
    mapping(address => bool) public isFeeExempt;
    uint256 public sellMul = 95;
    uint256 public buyMul = 95;
    uint256 public constant DIVISOR = 100;

    //Max bag requirements
    mapping(address => bool) public isTxLimitExempt;
    uint256 public maxBag = _totalSupply / 100;

    //Tax collection
    uint256 public taxBalance = 0;

    //Tax wallets
    address public teamWallet = 0xDa17D158bC42f9C29E626b836d9231bB173bab06;
    address public treasuryWallet = 0xF526A924c406D31d16a844FF04810b79E71804Ef;

    // Tax Split
    uint256 public teamShare = 40;
    uint256 public treasuryShare = 60;
    uint256 public constant SHAREDIVISOR = 100;

    //Known Wallets
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;

    //trading parameters
    uint256 public liquidity = 4 ether;
    uint256 public liqConst = liquidity * _totalSupply;
    uint256 public constant TRADE_OPEN_TIME = 1673544600;

    //volume trackers
    mapping(address => uint256) public indVol;
    mapping(uint256 => uint256) public tVol;
    uint256 public totalVolume = 0;

    //candlestick data
    uint256 public totalTx;
    mapping(uint256 => uint256) public txTimeStamp;

    struct candleStick {
        uint256 time;
        uint256 open;
        uint256 close;
        uint256 high;
        uint256 low;
    }

    mapping(uint256 => candleStick) public candleStickData;

    //Frontrun Guard
    mapping(address => uint256) private _lastBuyBlock;

    //Migration Wallet
    address public constant MIGRATION_WALLET =
        0xc207cd3f61Da958AA6f4209C5f0a145C056B576f;

    // initialize supply
    constructor() {
        _balances[address(this)] = _totalSupply;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[MIGRATION_WALLET] = true;
        
        isTxLimitExempt[MIGRATION_WALLET] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[address(0)] = true;

        emit Transfer(address(0), address(this), _totalSupply);
    }

    function totalSupply() external pure override returns (uint256) {
        return _totalSupply;
    }

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

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

    function 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 approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        require(spender != address(0), "SRG20: approve to the zero address");
        require(
            msg.sender != address(0),
            "SRG20: approve from the zero address"
        );

        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - _balances[DEAD];
    }

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
        require(
            newLimit >= _totalSupply / 100,
            "New wallet limit should be at least 1% of total supply"
        );
        maxBag = newLimit;
        emit MaxBagChanged(newLimit);
    }

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

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

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

    /** TransferFrom Function */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        address spender = msg.sender;
        //check allowance requirement
        _spendAllowance(sender, spender, amount);
        return _transferFrom(sender, recipient, amount);
    }

    /** Internal Transfer */
    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        // make standard checks
        require(
            recipient != address(0) && recipient != address(this),
            "transfer to the zero address or CA"
        );
        require(amount > 0, "Transfer amount must be greater than zero");
        require(
            isTxLimitExempt[recipient] ||
                _balances[recipient] + amount <= maxBag,
            "Max wallet exceeded!"
        );

        // subtract from sender
        _balances[sender] = _balances[sender] - amount;

        // give amount to receiver
        _balances[recipient] = _balances[recipient] + amount;

        // Transfer Event
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = _allowances[owner][spender];
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "SRG20: insufficient allowance"
            );

            unchecked {
                // decrease allowance
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /** Purchases SURGE Tokens and Deposits Them in Sender's Address*/
    function _buy(uint256 minTokenOut, uint256 deadline)
        public
        payable
        nonReentrant
        returns (bool)
    {
        // deadline requirement
        require(deadline >= block.timestamp, "Deadline EXPIRED");

        // Frontrun Guard
        _lastBuyBlock[msg.sender] = block.number;

        // liquidity is set
        require(liquidity > 0, "The token has no liquidity");

        // check if trading is open or whether the buying wallet is the migration one
        require(
            block.timestamp >= TRADE_OPEN_TIME ||
                msg.sender == MIGRATION_WALLET,
            "Trading is not Open"
        );

        //remove the buy tax
        uint256 bnbAmount = isFeeExempt[msg.sender]
            ? msg.value
            : (msg.value * buyMul) / DIVISOR;

        // how much they should purchase?
        uint256 tokensToSend = _balances[address(this)] -
            (liqConst / (bnbAmount + liquidity));

        //revert for max bag
        require(
            _balances[msg.sender] + tokensToSend <= maxBag ||
                isTxLimitExempt[msg.sender],
            "Max wallet exceeded"
        );

        // revert if under 1
        require(tokensToSend > 1, "Must Buy more than 1 decimal of Surge");

        // revert for slippage
        require(tokensToSend >= minTokenOut, "INSUFFICIENT OUTPUT AMOUNT");

        // transfer the tokens from CA to the buyer
        buy(msg.sender, tokensToSend);

        //update available tax to extract and Liquidity
        uint256 taxAmount = msg.value - bnbAmount;
        taxBalance = taxBalance + taxAmount;
        liquidity = liquidity + bnbAmount;

        //update volume
        uint256 cTime = block.timestamp;
        uint256 dollarBuy = msg.value * getBNBPrice();
        totalVolume += dollarBuy;
        indVol[msg.sender] += dollarBuy;
        tVol[cTime] += dollarBuy;

        //update candleStickData
        totalTx += 1;
        txTimeStamp[totalTx] = cTime;
        uint256 cPrice = calculatePrice() * getBNBPrice();
        candleStickData[cTime].time = cTime;
        if (candleStickData[cTime].open == 0) {
            if (totalTx == 1) {
                candleStickData[cTime].open =
                    ((liquidity - bnbAmount) / (_totalSupply)) *
                    getBNBPrice();
            } else {
                candleStickData[cTime].open = candleStickData[
                    txTimeStamp[totalTx - 1]
                ].close;
            }
        }
        candleStickData[cTime].close = cPrice;

        if (
            candleStickData[cTime].high < cPrice ||
            candleStickData[cTime].high == 0
        ) {
            candleStickData[cTime].high = cPrice;
        }

        if (
            candleStickData[cTime].low > cPrice ||
            candleStickData[cTime].low == 0
        ) {
            candleStickData[cTime].low = cPrice;
        }

        //emit transfer and buy events
        emit Transfer(address(this), msg.sender, tokensToSend);
        emit Bought(
            msg.sender,
            address(this),
            tokensToSend,
            msg.value,
            bnbAmount * getBNBPrice()
        );
        return true;
    }

    /** Sends Tokens to the buyer Address */
    function buy(address receiver, uint256 amount) internal {
        _balances[receiver] = _balances[receiver] + amount;
        _balances[address(this)] = _balances[address(this)] - amount;
    }

    /** Sells SURGE Tokens And Deposits the BNB into Seller's Address */
    function _sell(
        uint256 tokenAmount,
        uint256 deadline,
        uint256 minBNBOut
    ) public nonReentrant returns (bool) {
        // deadline requirement
        require(deadline >= block.timestamp, "Deadline EXPIRED");

        //Frontrun Guard
        require(
            _lastBuyBlock[msg.sender] != block.number,
            "Buying and selling in the same block is not allowed!"
        );

        address seller = msg.sender;

        // make sure seller has this balance
        require(
            _balances[seller] >= tokenAmount,
            "cannot sell above token amount"
        );

        // get how much beans are the tokens worth
        uint256 amountBNB = liquidity -
            (liqConst / (_balances[address(this)] + tokenAmount));
        uint256 amountTax = (amountBNB * (DIVISOR - sellMul)) / DIVISOR;
        uint256 BNBToSend = amountBNB - amountTax;

        //slippage revert
        require(amountBNB >= minBNBOut, "INSUFFICIENT OUTPUT AMOUNT");

        // send BNB to Seller
        (bool successful, ) = isFeeExempt[msg.sender]
            ? payable(seller).call{value: amountBNB}("")
            : payable(seller).call{value: BNBToSend}("");
        require(successful, "BNB/ETH transfer failed");

        // subtract full amount from sender
        _balances[seller] = _balances[seller] - tokenAmount;

        //add tax allowance to be withdrawn and remove from liq the amount of beans taken by the seller
        taxBalance = isFeeExempt[msg.sender]
            ? taxBalance
            : taxBalance + amountTax;
        liquidity = liquidity - amountBNB;

        // add tokens back into the contract
        _balances[address(this)] = _balances[address(this)] + tokenAmount;

        //update volume
        uint256 cTime = block.timestamp;
        uint256 dollarSell = amountBNB * getBNBPrice();
        totalVolume += dollarSell;
        indVol[msg.sender] += dollarSell;
        tVol[cTime] += dollarSell;

        //update candleStickData
        totalTx += 1;
        txTimeStamp[totalTx] = cTime;
        uint256 cPrice = calculatePrice() * getBNBPrice();
        candleStickData[cTime].time = cTime;
        if (candleStickData[cTime].open == 0) {
            candleStickData[cTime].open = candleStickData[
                txTimeStamp[totalTx - 1]
            ].close;
        }
        candleStickData[cTime].close = cPrice;

        if (
            candleStickData[cTime].high < cPrice ||
            candleStickData[cTime].high == 0
        ) {
            candleStickData[cTime].high = cPrice;
        }

        if (
            candleStickData[cTime].low > cPrice ||
            candleStickData[cTime].low == 0
        ) {
            candleStickData[cTime].low = cPrice;
        }

        // emit transfer and sell events
        emit Transfer(seller, address(this), tokenAmount);
        if (isFeeExempt[msg.sender]) {
            emit Sold(
                address(this),
                msg.sender,
                tokenAmount,
                amountBNB,
                dollarSell
            );
        } else {
            emit Sold(
                address(this),
                msg.sender,
                tokenAmount,
                BNBToSend,
                BNBToSend * getBNBPrice()
            );
        }
        return true;
    }

    /** Amount of BNB in Contract */
    function getLiquidity() public view returns (uint256) {
        return liquidity;
    }

    /** Returns the value of your holdings before the sell fee */
    function getValueOfHoldings(address holder) public view returns (uint256) {
        return
            ((_balances[holder] * liquidity) / _balances[address(this)]) *
            getBNBPrice();
    }

    function changeFees(uint256 newBuyMul, uint256 newSellMul)
        external
        onlyOwner
    {
        require(
            newBuyMul >= 90 &&
                newSellMul >= 90 &&
                newBuyMul <= 100 &&
                newSellMul <= 100,
            "Fees are too high"
        );

        buyMul = newBuyMul;
        sellMul = newSellMul;

        emit FeesMulChanged(newBuyMul, newSellMul);
    }

    function changeTaxDistribution(
        uint256 newteamShare,
        uint256 newtreasuryShare
    ) external onlyOwner {
        require(
            newteamShare + newtreasuryShare == SHAREDIVISOR,
            "Sum of shares must be 100"
        );

        teamShare = newteamShare;
        treasuryShare = newtreasuryShare;
    }

    function changeFeeReceivers(
        address newTeamWallet,
        address newTreasuryWallet
    ) external onlyOwner {
        require(
            newTeamWallet != address(0) && newTreasuryWallet != address(0),
            "New wallets must not be the ZERO address"
        );

        teamWallet = newTeamWallet;
        treasuryWallet = newTreasuryWallet;
    }

    function withdrawTaxBalance() external nonReentrant onlyOwner {
        (bool temp1, ) = payable(teamWallet).call{
            value: (taxBalance * teamShare) / SHAREDIVISOR
        }("");
        (bool temp2, ) = payable(treasuryWallet).call{
            value: (taxBalance * treasuryShare) / SHAREDIVISOR
        }("");
        assert(temp1 && temp2);
        taxBalance = 0;
    }

    function getTokenAmountOut(uint256 amountBNBIn)
        external
        view
        returns (uint256)
    {
        uint256 amountAfter = liqConst / (liquidity - amountBNBIn);
        uint256 amountBefore = liqConst / liquidity;
        return amountAfter - amountBefore;
    }

    function getBNBAmountOut(uint256 amountIn) public view returns (uint256) {
        uint256 beansBefore = liqConst / _balances[address(this)];
        uint256 beansAfter = liqConst / (_balances[address(this)] + amountIn);
        return beansBefore - beansAfter;
    }

    function addLiquidity() external payable onlyOwner {
        uint256 tokensToAdd = (_balances[address(this)] * msg.value) /
            liquidity;
        require(_balances[msg.sender] >= tokensToAdd, "Not enough tokens!");

        uint256 oldLiq = liquidity;
        liquidity = liquidity + msg.value;
        _balances[address(this)] += tokensToAdd;
        _balances[msg.sender] -= tokensToAdd;
        liqConst = (liqConst * liquidity) / oldLiq;

        emit Transfer(msg.sender, address(this), tokensToAdd);
    }

    function getMarketCap() external view returns (uint256) {
        return (getCirculatingSupply() * calculatePrice() * getBNBPrice());
    }

    address private stablePairAddress =
        0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc;
    address private stableAddress = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;

    function changeStablePair(address newStablePair, address newStableAddress)
        external
        onlyOwner
    {
        require(
            newStablePair != address(0) && newStableAddress != address(0),
            "New addresses must not be the ZERO address"
        );

        stablePairAddress = newStablePair;
        stableAddress = newStableAddress;
        emit StablePairChanged(newStablePair, newStableAddress);
    }

    // calculate price based on pair reserves
    function getBNBPrice() public view returns (uint256) {
        IPancakePair pair = IPancakePair(stablePairAddress);
        IERC20 token1 = pair.token0() == stableAddress
            ? IERC20(pair.token1())
            : IERC20(pair.token0());

        (uint256 Res0, uint256 Res1, ) = pair.getReserves();

        if (pair.token0() != stableAddress) {
            (Res1, Res0, ) = pair.getReserves();
        }
        uint256 res0 = Res0 * 10**token1.decimals();
        return (res0 / Res1); // return amount of token0 needed to buy token1
    }

    // Returns the Current Price of the Token in beans
    function calculatePrice() public view returns (uint256) {
        require(liquidity > 0, "No Liquidity");
        return liquidity / _balances[address(this)];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"beans","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dollarBuy","type":"uint256"}],"name":"Bought","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newBuyMul","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellMul","type":"uint256"}],"name":"FeesMulChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMaxBag","type":"uint256"}],"name":"MaxBagChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"beans","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dollarSell","type":"uint256"}],"name":"Sold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newStablePair","type":"address"},{"indexed":false,"internalType":"address","name":"newStableToken","type":"address"}],"name":"StablePairChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIGRATION_WALLET","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SHAREDIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRADE_OPEN_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minTokenOut","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"_buy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"minBNBOut","type":"uint256"}],"name":"_sell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMul","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calculatePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"candleStickData","outputs":[{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"open","type":"uint256"},{"internalType":"uint256","name":"close","type":"uint256"},{"internalType":"uint256","name":"high","type":"uint256"},{"internalType":"uint256","name":"low","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newTeamWallet","type":"address"},{"internalType":"address","name":"newTreasuryWallet","type":"address"}],"name":"changeFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyMul","type":"uint256"},{"internalType":"uint256","name":"newSellMul","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newStablePair","type":"address"},{"internalType":"address","name":"newStableAddress","type":"address"}],"name":"changeStablePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newteamShare","type":"uint256"},{"internalType":"uint256","name":"newtreasuryShare","type":"uint256"}],"name":"changeTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"getBNBAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBNBPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarketCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountBNBIn","type":"uint256"}],"name":"getTokenAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"getValueOfHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"indVol","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqConst","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBag","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMul","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tVol","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalVolume","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"txTimeStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawTaxBalance","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052605f600581905560065560646200001e6009600a620003f0565b6200002e906305f5e10062000408565b6200003a919062000422565b60085560006009908155600a80546001600160a01b031990811673da17d158bc42f9c29e626b836d9231bb173bab06178255600b805490911673f526a924c406d31d16a844ff04810b79e71804ef1790556028600c55603c600d55673782dace9d900000600e55620000ad9190620003f0565b620000bd906305f5e10062000408565b600e54620000cc919062000408565b600f556000601255601780546001600160a01b031990811673b4e16d0168e52d35cacd2c6185b44281ec28c9dc179091556018805490911673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb481790553480156200012957600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180556200017d6009600a620003f0565b6200018d906305f5e10062000408565b30600081815260026020908152604080832094909455338252600481528382208054600160ff1991821681179092557fa117656c6a259eb6b5d8d76b4581229baabc32fdc432407a7740bae4c3df9f52805482168317905560079092527fea2c12fe97acd9868ccd4ce083e17f3749fee6bf474bfed5f51316445f6b10da8054831682179055848320805483168217905583835293822080548216851790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548216851790558180527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df8054909116909317909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002b46009600a620003f0565b620002c4906305f5e10062000408565b60405190815260200160405180910390a362000445565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000332578160001904821115620003165762000316620002db565b808516156200032457918102915b93841c9390800290620002f6565b509250929050565b6000826200034b57506001620003ea565b816200035a57506000620003ea565b81600181146200037357600281146200037e576200039e565b6001915050620003ea565b60ff841115620003925762000392620002db565b50506001821b620003ea565b5060208310610133831016604e8410600b8410161715620003c3575081810a620003ea565b620003cf8383620002f1565b8060001904821115620003e657620003e6620002db565b0290505b92915050565b60006200040160ff8416836200033a565b9392505050565b8082028115828204841417620003ea57620003ea620002db565b6000826200044057634e487b7160e01b600052601260045260246000fd5b500490565b612f6c80620004556000396000f3fe60806040526004361061036b5760003560e01c80637220cf39116101c6578063aa98e163116100f7578063e8f620b111610095578063f2fde38b1161006f578063f2fde38b14610a08578063f4034e4b14610a28578063f7a62fe914610a48578063fabe628314610a7557600080fd5b8063e8f620b1146109c7578063ea6ef2fe146109dd578063f2220c9e146109f357600080fd5b8063d348b409116100d1578063d348b4091461094e578063dd62ed3e14610963578063e0cfcc95146109a9578063e8078d94146109bf57600080fd5b8063aa98e163146108f0578063b37659a414610906578063b4492d0c1461092657600080fd5b806395d89b4111610164578063a0e571a21161013e578063a0e571a214610828578063a3a2e89e1461083e578063a8fb66b41461085e578063a9059cbb146108d057600080fd5b806395d89b41146107b95780639cbd09ac146107e55780639d7550261461081257600080fd5b80638b42507f116101a05780638b42507f146107435780638da5cb5b146107735780638f0d3b8b1461079157806390825c28146107a457600080fd5b80637220cf39146106f75780637796ff371461070d5780637db1342c1461072357600080fd5b8063313ce567116102a0578063599270441161023e5780636ebcf607116102185780636ebcf6071461065f57806370a082311461068c57806371073b38146106c2578063715018a6146106e257600080fd5b806359927044146106295780635f81a57c1461064957806362ff2e9a1461054a57600080fd5b80633f4218e01161027a5780633f4218e0146105745780634626402b146105a457806349ce234c146105dc578063571ac8b01461060957600080fd5b8063313ce5671461052e5780633410fe6e1461054a5780633eaaf86b1461055f57600080fd5b80631f02a29c1161030d57806321ecff5b116102e757806321ecff5b146104c157806323b872dd146104e157806325b15556146105015780632b112e491461051957600080fd5b80631f02a29c146104615780631f1a73d5146104815780631f2c80f1146104a157600080fd5b806318160ddd1161034957806318160ddd146103ff5780631a686502146104145780631ab6ab241461042a5780631d6bdb5b1461044c57600080fd5b806306fdde03146103705780630910a510146103b0578063095ea7b3146103cf575b600080fd5b34801561037c57600080fd5b50604080518082019091526005815264535552474560d81b60208201525b6040516103a79190612abd565b60405180910390f35b3480156103bc57600080fd5b50600e545b6040519081526020016103a7565b3480156103db57600080fd5b506103ef6103ea366004612b23565b610a95565b60405190151581526020016103a7565b34801561040b57600080fd5b506103c1610bbb565b34801561042057600080fd5b506103c1600e5481565b34801561043657600080fd5b5061044a610445366004612b4f565b610bdc565b005b34801561045857600080fd5b5061044a610cf4565b34801561046d57600080fd5b506103c161047c366004612b88565b610e4e565b34801561048d57600080fd5b506103c161049c366004612ba5565b610e9b565b3480156104ad57600080fd5b5061044a6104bc366004612b4f565b610ef9565b3480156104cd57600080fd5b5061044a6104dc366004612bbe565b610fce565b3480156104ed57600080fd5b506103ef6104fc366004612be0565b6110a4565b34801561050d57600080fd5b506103c16363c0439881565b34801561052557600080fd5b506103c16110c6565b34801561053a57600080fd5b50604051600981526020016103a7565b34801561055657600080fd5b506103c1606481565b34801561056b57600080fd5b506103c1611119565b34801561058057600080fd5b506103ef61058f366004612b88565b60046020526000908152604090205460ff1681565b3480156105b057600080fd5b50600b546105c4906001600160a01b031681565b6040516001600160a01b0390911681526020016103a7565b3480156105e857600080fd5b506103c16105f7366004612ba5565b60116020526000908152604090205481565b34801561061557600080fd5b506103ef610624366004612b88565b611136565b34801561063557600080fd5b50600a546105c4906001600160a01b031681565b34801561065557600080fd5b506103c160125481565b34801561066b57600080fd5b506103c161067a366004612b88565b60026020526000908152604090205481565b34801561069857600080fd5b506103c16106a7366004612b88565b6001600160a01b031660009081526002602052604090205490565b3480156106ce57600080fd5b506103c16106dd366004612ba5565b611144565b3480156106ee57600080fd5b5061044a611176565b34801561070357600080fd5b506103c160135481565b34801561071957600080fd5b506103c1600d5481565b34801561072f57600080fd5b5061044a61073e366004612ba5565b6111ea565b34801561074f57600080fd5b506103ef61075e366004612b88565b60076020526000908152604090205460ff1681565b34801561077f57600080fd5b506000546001600160a01b03166105c4565b6103ef61079f366004612bbe565b6112e3565b3480156107b057600080fd5b506103c16118a6565b3480156107c557600080fd5b5060408051808201909152600381526253524760e81b602082015261039a565b3480156107f157600080fd5b506103c1610800366004612b88565b60106020526000908152604090205481565b34801561081e57600080fd5b506103c160055481565b34801561083457600080fd5b506103c160065481565b34801561084a57600080fd5b5061044a610859366004612c21565b6118d4565b34801561086a57600080fd5b506108a8610879366004612ba5565b601560205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103a7565b3480156108dc57600080fd5b506103ef6108eb366004612b23565b611929565b3480156108fc57600080fd5b506103c160095481565b34801561091257600080fd5b506103ef610921366004612c54565b61193d565b34801561093257600080fd5b506105c473c207cd3f61da958aa6f4209c5f0a145c056b576f81565b34801561095a57600080fd5b506103c1611fb7565b34801561096f57600080fd5b506103c161097e366004612b4f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109b557600080fd5b506103c160085481565b61044a612016565b3480156109d357600080fd5b506103c1600f5481565b3480156109e957600080fd5b506103c1600c5481565b3480156109ff57600080fd5b506103c1612161565b348015610a1457600080fd5b5061044a610a23366004612b88565b6124c2565b348015610a3457600080fd5b5061044a610a43366004612bbe565b6125ac565b348015610a5457600080fd5b506103c1610a63366004612ba5565b60146020526000908152604090205481565b348015610a8157600080fd5b5061044a610a90366004612c21565b61263a565b60006001600160a01b038316610afd5760405162461bcd60e51b815260206004820152602260248201527f53524732303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b33610b565760405162461bcd60e51b8152602060048201526024808201527f53524732303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610af4565b3360008181526003602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000610bc96009600a612d7a565b610bd7906305f5e100612d89565b905090565b6000546001600160a01b03163314610c065760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b03821615801590610c2657506001600160a01b03811615155b610c855760405162461bcd60e51b815260206004820152602a60248201527f4e657720616464726573736573206d757374206e6f7420626520746865205a45604482015269524f206164647265737360b01b6064820152608401610af4565b601780546001600160a01b038481166001600160a01b03199283168117909355601880549185169190921681179091556040805192835260208301919091527f9531844c54a073e677302121f844ce762e5d0d82415924346672381a39f8532c91015b60405180910390a15050565b600260015403610d165760405162461bcd60e51b8152600401610af490612dd5565b60026001556000546001600160a01b03163314610d455760405162461bcd60e51b8152600401610af490612da0565b600a54600c546009546000926001600160a01b031691606491610d689190612d89565b610d729190612e0c565b604051600081818185875af1925050503d8060008114610dae576040519150601f19603f3d011682016040523d82523d6000602084013e610db3565b606091505b5050600b54600d546009549293506000926001600160a01b0390921691606491610ddc91612d89565b610de69190612e0c565b604051600081818185875af1925050503d8060008114610e22576040519150601f19603f3d011682016040523d82523d6000602084013e610e27565b606091505b50509050818015610e355750805b610e4157610e41612e2e565b5050600060095560018055565b6000610e58612161565b3060009081526002602052604080822054600e546001600160a01b03871684529190922054610e879190612d89565b610e919190612e0c565b610bb59190612d89565b30600090815260026020526040812054600f548291610eb991612e0c565b3060009081526002602052604081205491925090610ed8908590612e44565b600f54610ee59190612e0c565b9050610ef18183612e57565b949350505050565b6000546001600160a01b03163314610f235760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b03821615801590610f4357506001600160a01b03811615155b610fa05760405162461bcd60e51b815260206004820152602860248201527f4e65772077616c6c657473206d757374206e6f7420626520746865205a45524f604482015267206164647265737360c01b6064820152608401610af4565b600a80546001600160a01b039384166001600160a01b031991821617909155600b8054929093169116179055565b6000546001600160a01b03163314610ff85760405162461bcd60e51b8152600401610af490612da0565b605a821015801561100a5750605a8110155b8015611017575060648211155b8015611024575060648111155b6110645760405162461bcd60e51b815260206004820152601160248201527008ccacae640c2e4ca40e8dede40d0d2ced607b1b6044820152606401610af4565b6006829055600581905560408051838152602081018390527fc19ebd395193e8ddaaeda048fb5cb09d4e2dbebcce719174166029a4093878569101610ce8565b6000336110b285828561268f565b6110bd858585612721565b95945050505050565b61dead600090815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc546111016009600a612d7a565b61110f906305f5e100612d89565b610bd79190612e57565b6111256009600a612d7a565b611133906305f5e100612d89565b81565b6000610bb582600019610a95565b60008082600e546111559190612e57565b600f546111629190612e0c565b90506000600e54600f54610ee59190612e0c565b6000546001600160a01b031633146111a05760405162461bcd60e51b8152600401610af490612da0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112145760405162461bcd60e51b8152600401610af490612da0565b60646112226009600a612d7a565b611230906305f5e100612d89565b61123a9190612e0c565b8110156112a85760405162461bcd60e51b815260206004820152603660248201527f4e65772077616c6c6574206c696d69742073686f756c64206265206174206c65604482015275617374203125206f6620746f74616c20737570706c7960501b6064820152608401610af4565b60088190556040518181527fb579b5ff4decd3791f679ec8d72f16128df08aa3f346b425480a0135d2e8bf759060200160405180910390a150565b60006002600154036113075760405162461bcd60e51b8152600401610af490612dd5565b60026001554282101561134f5760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610af4565b336000908152601660205260409020439055600e546113b05760405162461bcd60e51b815260206004820152601a60248201527f54686520746f6b656e20686173206e6f206c69717569646974790000000000006044820152606401610af4565b6363c04398421015806113d657503373c207cd3f61da958aa6f4209c5f0a145c056b576f145b6114185760405162461bcd60e51b81526020600482015260136024820152722a3930b234b7339034b9903737ba1027b832b760691b6044820152606401610af4565b3360009081526004602052604081205460ff1661144e5760646006543461143f9190612d89565b6114499190612e0c565b611450565b345b90506000600e54826114629190612e44565b600f5461146f9190612e0c565b306000908152600260205260409020546114899190612e57565b60085433600090815260026020526040902054919250906114ab908390612e44565b1115806114c757503360009081526007602052604090205460ff165b6115095760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610af4565b600181116115675760405162461bcd60e51b815260206004820152602560248201527f4d75737420427579206d6f7265207468616e203120646563696d616c206f6620604482015264537572676560d81b6064820152608401610af4565b848110156115b75760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610af4565b6115c13382612934565b60006115cd8334612e57565b9050806009546115dd9190612e44565b600955600e546115ee908490612e44565b600e554260006115fc612161565b6116069034612d89565b9050806012600082825461161a9190612e44565b9091555050336000908152601060205260408120805483929061163e908490612e44565b909155505060008281526011602052604081208054839290611661908490612e44565b9250508190555060016013600082825461167b9190612e44565b9091555050601354600090815260146020526040812083905561169c612161565b6116a4611fb7565b6116ae9190612d89565b6000848152601560205260408120858155600101549192500361178357601354600103611730576116dd612161565b6116e96009600a612d7a565b6116f7906305f5e100612d89565b87600e546117059190612e57565b61170f9190612e0c565b6117199190612d89565b600084815260156020526040902060010155611783565b601560006014600060016013546117479190612e57565b81526020019081526020016000205481526020019081526020016000206002015460156000858152602001908152602001600020600101819055505b600083815260156020526040902060028101829055600301548111806117b85750600083815260156020526040902060030154155b156117d25760008381526015602052604090206003018190555b6000838152601560205260409020600401548110806118005750600083815260156020526040902060040154155b1561181a5760008381526015602052604090206004018190555b60405185815233903090600080516020612f178339815191529060200160405180910390a330337f7ce543d1780f3bdc3dac42da06c95da802653cd1b212b8d74ec3e3c33ad7095c873461186c612161565b611876908c612d89565b6040805193845260208401929092529082015260600160405180910390a350506001808055979650505050505050565b60006118b0612161565b6118b8611fb7565b6118c06110c6565b6118ca9190612d89565b610bd79190612d89565b6000546001600160a01b031633146118fe5760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000611936338484612721565b9392505050565b60006002600154036119615760405162461bcd60e51b8152600401610af490612dd5565b6002600155428310156119a95760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610af4565b33600090815260166020526040902054439003611a255760405162461bcd60e51b815260206004820152603460248201527f427579696e6720616e642073656c6c696e6720696e207468652073616d6520626044820152736c6f636b206973206e6f7420616c6c6f7765642160601b6064820152608401610af4565b33600081815260026020526040902054851115611a845760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c2061626f766520746f6b656e20616d6f756e7400006044820152606401610af4565b30600090815260026020526040812054611a9f908790612e44565b600f54611aac9190612e0c565b600e54611ab99190612e57565b9050600060646005546064611ace9190612e57565b611ad89084612d89565b611ae29190612e0c565b90506000611af08284612e57565b905085831015611b425760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610af4565b3360009081526004602052604081205460ff16611bad576040516001600160a01b038616908390600081818185875af1925050503d8060008114611ba2576040519150601f19603f3d011682016040523d82523d6000602084013e611ba7565b606091505b50611bfd565b6040516001600160a01b038616908590600081818185875af1925050503d8060008114611bf6576040519150601f19603f3d011682016040523d82523d6000602084013e611bfb565b606091505b505b50905080611c4d5760405162461bcd60e51b815260206004820152601760248201527f424e422f455448207472616e73666572206661696c65640000000000000000006044820152606401610af4565b6001600160a01b038516600090815260026020526040902054611c71908a90612e57565b6001600160a01b03861660009081526002602090815260408083209390935533825260049052205460ff16611cb35782600954611cae9190612e44565b611cb7565b6009545b600955600e54611cc8908590612e57565b600e5530600090815260026020526040902054611ce6908a90612e44565b306000908152600260205260408120919091554290611d03612161565b611d0d9087612d89565b90508060126000828254611d219190612e44565b90915550503360009081526010602052604081208054839290611d45908490612e44565b909155505060008281526011602052604081208054839290611d68908490612e44565b92505081905550600160136000828254611d829190612e44565b90915550506013546000908152601460205260408120839055611da3612161565b611dab611fb7565b611db59190612d89565b60008481526015602052604081208581556001015491925003611e255760156000601460006001601354611de99190612e57565b81526020019081526020016000205481526020019081526020016000206002015460156000858152602001908152602001600020600101819055505b60008381526015602052604090206002810182905560030154811180611e5a5750600083815260156020526040902060030154155b15611e745760008381526015602052604090206003018190555b600083815260156020526040902060040154811080611ea25750600083815260156020526040902060040154155b15611ebc5760008381526015602052604090206004018190555b6040518c815230906001600160a01b038a1690600080516020612f178339815191529060200160405180910390a33360009081526004602052604090205460ff1615611f4c57604080518d815260208101899052908101839052339030907f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e9060600160405180910390a3611fa2565b33307f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e8e88611f79612161565b611f83908b612d89565b6040805193845260208401929092529082015260600160405180910390a35b505060018080559a9950505050505050505050565b600080600e5411611ff95760405162461bcd60e51b815260206004820152600c60248201526b4e6f204c697175696469747960a01b6044820152606401610af4565b30600090815260026020526040902054600e54610bd79190612e0c565b6000546001600160a01b031633146120405760405162461bcd60e51b8152600401610af490612da0565b600e5430600090815260026020526040812054909190612061903490612d89565b61206b9190612e0c565b336000908152600260205260409020549091508111156120c25760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b6044820152606401610af4565b600e546120cf3482612e44565b600e5530600090815260026020526040812080548492906120f1908490612e44565b90915550503360009081526002602052604081208054849290612115908490612e57565b9091555050600e54600f54829161212b91612d89565b6121359190612e0c565b600f5560405182815230903390600080516020612f178339815191529060200160405180910390a35050565b60175460185460408051630dfe168160e01b815290516000936001600160a01b039081169385939116918491630dfe16819160048083019260209291908290030181865afa1580156121b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121db9190612e6a565b6001600160a01b03161461225057816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612227573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224b9190612e6a565b6122b2565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561228e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b29190612e6a565b9050600080836001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156122f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123199190612ea3565b506001600160701b031691506001600160701b03169150601860009054906101000a90046001600160a01b03166001600160a01b0316846001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561238d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b19190612e6a565b6001600160a01b03161461243357836001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156123fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124219190612ea3565b506001600160701b0390811693501690505b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124979190612ef3565b6124a290600a612d7a565b6124ac9084612d89565b90506124b88282612e0c565b9550505050505090565b6000546001600160a01b031633146124ec5760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b0381166125515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610af4565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146125d65760405162461bcd60e51b8152600401610af490612da0565b60646125e28284612e44565b1461262f5760405162461bcd60e51b815260206004820152601960248201527f53756d206f6620736861726573206d75737420626520313030000000000000006044820152606401610af4565b600c91909155600d55565b6000546001600160a01b031633146126645760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b03808416600090815260036020908152604080832093861683529290522054600019811461271b578181101561270e5760405162461bcd60e51b815260206004820152601d60248201527f53524732303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610af4565b61271b8484848403612999565b50505050565b60006001600160a01b0383161580159061274457506001600160a01b0383163014155b61279b5760405162461bcd60e51b815260206004820152602260248201527f7472616e7366657220746f20746865207a65726f2061646472657373206f7220604482015261434160f01b6064820152608401610af4565b600082116127fd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610af4565b6001600160a01b03831660009081526007602052604090205460ff168061284957506008546001600160a01b038416600090815260026020526040902054612846908490612e44565b11155b61288c5760405162461bcd60e51b81526020600482015260146024820152734d61782077616c6c65742065786365656465642160601b6044820152606401610af4565b6001600160a01b0384166000908152600260205260409020546128b0908390612e57565b6001600160a01b0380861660009081526002602052604080822093909355908516815220546128e0908390612e44565b6001600160a01b038085166000818152600260205260409081902093909355915190861690600080516020612f17833981519152906129229086815260200190565b60405180910390a35060019392505050565b6001600160a01b038216600090815260026020526040902054612958908290612e44565b6001600160a01b038316600090815260026020526040808220929092553081522054612985908290612e57565b306000908152600260205260409020555050565b6001600160a01b0383166129fb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610af4565b6001600160a01b038216612a5c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610af4565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208083528351808285015260005b81811015612aea57858101830151858201604001528201612ace565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612b2057600080fd5b50565b60008060408385031215612b3657600080fd5b8235612b4181612b0b565b946020939093013593505050565b60008060408385031215612b6257600080fd5b8235612b6d81612b0b565b91506020830135612b7d81612b0b565b809150509250929050565b600060208284031215612b9a57600080fd5b813561193681612b0b565b600060208284031215612bb757600080fd5b5035919050565b60008060408385031215612bd157600080fd5b50508035926020909101359150565b600080600060608486031215612bf557600080fd5b8335612c0081612b0b565b92506020840135612c1081612b0b565b929592945050506040919091013590565b60008060408385031215612c3457600080fd5b8235612c3f81612b0b565b915060208301358015158114612b7d57600080fd5b600080600060608486031215612c6957600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612cd1578160001904821115612cb757612cb7612c80565b80851615612cc457918102915b93841c9390800290612c9b565b509250929050565b600082612ce857506001610bb5565b81612cf557506000610bb5565b8160018114612d0b5760028114612d1557612d31565b6001915050610bb5565b60ff841115612d2657612d26612c80565b50506001821b610bb5565b5060208310610133831016604e8410600b8410161715612d54575081810a610bb5565b612d5e8383612c96565b8060001904821115612d7257612d72612c80565b029392505050565b600061193660ff841683612cd9565b8082028115828204841417610bb557610bb5612c80565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600082612e2957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052600160045260246000fd5b80820180821115610bb557610bb5612c80565b81810381811115610bb557610bb5612c80565b600060208284031215612e7c57600080fd5b815161193681612b0b565b80516001600160701b0381168114612e9e57600080fd5b919050565b600080600060608486031215612eb857600080fd5b612ec184612e87565b9250612ecf60208501612e87565b9150604084015163ffffffff81168114612ee857600080fd5b809150509250925092565b600060208284031215612f0557600080fd5b815160ff8116811461193657600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220893f225586137da88d5b98ad2229843777935be15a78dd070329ab9cd3fc1dab64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061036b5760003560e01c80637220cf39116101c6578063aa98e163116100f7578063e8f620b111610095578063f2fde38b1161006f578063f2fde38b14610a08578063f4034e4b14610a28578063f7a62fe914610a48578063fabe628314610a7557600080fd5b8063e8f620b1146109c7578063ea6ef2fe146109dd578063f2220c9e146109f357600080fd5b8063d348b409116100d1578063d348b4091461094e578063dd62ed3e14610963578063e0cfcc95146109a9578063e8078d94146109bf57600080fd5b8063aa98e163146108f0578063b37659a414610906578063b4492d0c1461092657600080fd5b806395d89b4111610164578063a0e571a21161013e578063a0e571a214610828578063a3a2e89e1461083e578063a8fb66b41461085e578063a9059cbb146108d057600080fd5b806395d89b41146107b95780639cbd09ac146107e55780639d7550261461081257600080fd5b80638b42507f116101a05780638b42507f146107435780638da5cb5b146107735780638f0d3b8b1461079157806390825c28146107a457600080fd5b80637220cf39146106f75780637796ff371461070d5780637db1342c1461072357600080fd5b8063313ce567116102a0578063599270441161023e5780636ebcf607116102185780636ebcf6071461065f57806370a082311461068c57806371073b38146106c2578063715018a6146106e257600080fd5b806359927044146106295780635f81a57c1461064957806362ff2e9a1461054a57600080fd5b80633f4218e01161027a5780633f4218e0146105745780634626402b146105a457806349ce234c146105dc578063571ac8b01461060957600080fd5b8063313ce5671461052e5780633410fe6e1461054a5780633eaaf86b1461055f57600080fd5b80631f02a29c1161030d57806321ecff5b116102e757806321ecff5b146104c157806323b872dd146104e157806325b15556146105015780632b112e491461051957600080fd5b80631f02a29c146104615780631f1a73d5146104815780631f2c80f1146104a157600080fd5b806318160ddd1161034957806318160ddd146103ff5780631a686502146104145780631ab6ab241461042a5780631d6bdb5b1461044c57600080fd5b806306fdde03146103705780630910a510146103b0578063095ea7b3146103cf575b600080fd5b34801561037c57600080fd5b50604080518082019091526005815264535552474560d81b60208201525b6040516103a79190612abd565b60405180910390f35b3480156103bc57600080fd5b50600e545b6040519081526020016103a7565b3480156103db57600080fd5b506103ef6103ea366004612b23565b610a95565b60405190151581526020016103a7565b34801561040b57600080fd5b506103c1610bbb565b34801561042057600080fd5b506103c1600e5481565b34801561043657600080fd5b5061044a610445366004612b4f565b610bdc565b005b34801561045857600080fd5b5061044a610cf4565b34801561046d57600080fd5b506103c161047c366004612b88565b610e4e565b34801561048d57600080fd5b506103c161049c366004612ba5565b610e9b565b3480156104ad57600080fd5b5061044a6104bc366004612b4f565b610ef9565b3480156104cd57600080fd5b5061044a6104dc366004612bbe565b610fce565b3480156104ed57600080fd5b506103ef6104fc366004612be0565b6110a4565b34801561050d57600080fd5b506103c16363c0439881565b34801561052557600080fd5b506103c16110c6565b34801561053a57600080fd5b50604051600981526020016103a7565b34801561055657600080fd5b506103c1606481565b34801561056b57600080fd5b506103c1611119565b34801561058057600080fd5b506103ef61058f366004612b88565b60046020526000908152604090205460ff1681565b3480156105b057600080fd5b50600b546105c4906001600160a01b031681565b6040516001600160a01b0390911681526020016103a7565b3480156105e857600080fd5b506103c16105f7366004612ba5565b60116020526000908152604090205481565b34801561061557600080fd5b506103ef610624366004612b88565b611136565b34801561063557600080fd5b50600a546105c4906001600160a01b031681565b34801561065557600080fd5b506103c160125481565b34801561066b57600080fd5b506103c161067a366004612b88565b60026020526000908152604090205481565b34801561069857600080fd5b506103c16106a7366004612b88565b6001600160a01b031660009081526002602052604090205490565b3480156106ce57600080fd5b506103c16106dd366004612ba5565b611144565b3480156106ee57600080fd5b5061044a611176565b34801561070357600080fd5b506103c160135481565b34801561071957600080fd5b506103c1600d5481565b34801561072f57600080fd5b5061044a61073e366004612ba5565b6111ea565b34801561074f57600080fd5b506103ef61075e366004612b88565b60076020526000908152604090205460ff1681565b34801561077f57600080fd5b506000546001600160a01b03166105c4565b6103ef61079f366004612bbe565b6112e3565b3480156107b057600080fd5b506103c16118a6565b3480156107c557600080fd5b5060408051808201909152600381526253524760e81b602082015261039a565b3480156107f157600080fd5b506103c1610800366004612b88565b60106020526000908152604090205481565b34801561081e57600080fd5b506103c160055481565b34801561083457600080fd5b506103c160065481565b34801561084a57600080fd5b5061044a610859366004612c21565b6118d4565b34801561086a57600080fd5b506108a8610879366004612ba5565b601560205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103a7565b3480156108dc57600080fd5b506103ef6108eb366004612b23565b611929565b3480156108fc57600080fd5b506103c160095481565b34801561091257600080fd5b506103ef610921366004612c54565b61193d565b34801561093257600080fd5b506105c473c207cd3f61da958aa6f4209c5f0a145c056b576f81565b34801561095a57600080fd5b506103c1611fb7565b34801561096f57600080fd5b506103c161097e366004612b4f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109b557600080fd5b506103c160085481565b61044a612016565b3480156109d357600080fd5b506103c1600f5481565b3480156109e957600080fd5b506103c1600c5481565b3480156109ff57600080fd5b506103c1612161565b348015610a1457600080fd5b5061044a610a23366004612b88565b6124c2565b348015610a3457600080fd5b5061044a610a43366004612bbe565b6125ac565b348015610a5457600080fd5b506103c1610a63366004612ba5565b60146020526000908152604090205481565b348015610a8157600080fd5b5061044a610a90366004612c21565b61263a565b60006001600160a01b038316610afd5760405162461bcd60e51b815260206004820152602260248201527f53524732303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b33610b565760405162461bcd60e51b8152602060048201526024808201527f53524732303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610af4565b3360008181526003602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000610bc96009600a612d7a565b610bd7906305f5e100612d89565b905090565b6000546001600160a01b03163314610c065760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b03821615801590610c2657506001600160a01b03811615155b610c855760405162461bcd60e51b815260206004820152602a60248201527f4e657720616464726573736573206d757374206e6f7420626520746865205a45604482015269524f206164647265737360b01b6064820152608401610af4565b601780546001600160a01b038481166001600160a01b03199283168117909355601880549185169190921681179091556040805192835260208301919091527f9531844c54a073e677302121f844ce762e5d0d82415924346672381a39f8532c91015b60405180910390a15050565b600260015403610d165760405162461bcd60e51b8152600401610af490612dd5565b60026001556000546001600160a01b03163314610d455760405162461bcd60e51b8152600401610af490612da0565b600a54600c546009546000926001600160a01b031691606491610d689190612d89565b610d729190612e0c565b604051600081818185875af1925050503d8060008114610dae576040519150601f19603f3d011682016040523d82523d6000602084013e610db3565b606091505b5050600b54600d546009549293506000926001600160a01b0390921691606491610ddc91612d89565b610de69190612e0c565b604051600081818185875af1925050503d8060008114610e22576040519150601f19603f3d011682016040523d82523d6000602084013e610e27565b606091505b50509050818015610e355750805b610e4157610e41612e2e565b5050600060095560018055565b6000610e58612161565b3060009081526002602052604080822054600e546001600160a01b03871684529190922054610e879190612d89565b610e919190612e0c565b610bb59190612d89565b30600090815260026020526040812054600f548291610eb991612e0c565b3060009081526002602052604081205491925090610ed8908590612e44565b600f54610ee59190612e0c565b9050610ef18183612e57565b949350505050565b6000546001600160a01b03163314610f235760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b03821615801590610f4357506001600160a01b03811615155b610fa05760405162461bcd60e51b815260206004820152602860248201527f4e65772077616c6c657473206d757374206e6f7420626520746865205a45524f604482015267206164647265737360c01b6064820152608401610af4565b600a80546001600160a01b039384166001600160a01b031991821617909155600b8054929093169116179055565b6000546001600160a01b03163314610ff85760405162461bcd60e51b8152600401610af490612da0565b605a821015801561100a5750605a8110155b8015611017575060648211155b8015611024575060648111155b6110645760405162461bcd60e51b815260206004820152601160248201527008ccacae640c2e4ca40e8dede40d0d2ced607b1b6044820152606401610af4565b6006829055600581905560408051838152602081018390527fc19ebd395193e8ddaaeda048fb5cb09d4e2dbebcce719174166029a4093878569101610ce8565b6000336110b285828561268f565b6110bd858585612721565b95945050505050565b61dead600090815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc546111016009600a612d7a565b61110f906305f5e100612d89565b610bd79190612e57565b6111256009600a612d7a565b611133906305f5e100612d89565b81565b6000610bb582600019610a95565b60008082600e546111559190612e57565b600f546111629190612e0c565b90506000600e54600f54610ee59190612e0c565b6000546001600160a01b031633146111a05760405162461bcd60e51b8152600401610af490612da0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112145760405162461bcd60e51b8152600401610af490612da0565b60646112226009600a612d7a565b611230906305f5e100612d89565b61123a9190612e0c565b8110156112a85760405162461bcd60e51b815260206004820152603660248201527f4e65772077616c6c6574206c696d69742073686f756c64206265206174206c65604482015275617374203125206f6620746f74616c20737570706c7960501b6064820152608401610af4565b60088190556040518181527fb579b5ff4decd3791f679ec8d72f16128df08aa3f346b425480a0135d2e8bf759060200160405180910390a150565b60006002600154036113075760405162461bcd60e51b8152600401610af490612dd5565b60026001554282101561134f5760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610af4565b336000908152601660205260409020439055600e546113b05760405162461bcd60e51b815260206004820152601a60248201527f54686520746f6b656e20686173206e6f206c69717569646974790000000000006044820152606401610af4565b6363c04398421015806113d657503373c207cd3f61da958aa6f4209c5f0a145c056b576f145b6114185760405162461bcd60e51b81526020600482015260136024820152722a3930b234b7339034b9903737ba1027b832b760691b6044820152606401610af4565b3360009081526004602052604081205460ff1661144e5760646006543461143f9190612d89565b6114499190612e0c565b611450565b345b90506000600e54826114629190612e44565b600f5461146f9190612e0c565b306000908152600260205260409020546114899190612e57565b60085433600090815260026020526040902054919250906114ab908390612e44565b1115806114c757503360009081526007602052604090205460ff165b6115095760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610af4565b600181116115675760405162461bcd60e51b815260206004820152602560248201527f4d75737420427579206d6f7265207468616e203120646563696d616c206f6620604482015264537572676560d81b6064820152608401610af4565b848110156115b75760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610af4565b6115c13382612934565b60006115cd8334612e57565b9050806009546115dd9190612e44565b600955600e546115ee908490612e44565b600e554260006115fc612161565b6116069034612d89565b9050806012600082825461161a9190612e44565b9091555050336000908152601060205260408120805483929061163e908490612e44565b909155505060008281526011602052604081208054839290611661908490612e44565b9250508190555060016013600082825461167b9190612e44565b9091555050601354600090815260146020526040812083905561169c612161565b6116a4611fb7565b6116ae9190612d89565b6000848152601560205260408120858155600101549192500361178357601354600103611730576116dd612161565b6116e96009600a612d7a565b6116f7906305f5e100612d89565b87600e546117059190612e57565b61170f9190612e0c565b6117199190612d89565b600084815260156020526040902060010155611783565b601560006014600060016013546117479190612e57565b81526020019081526020016000205481526020019081526020016000206002015460156000858152602001908152602001600020600101819055505b600083815260156020526040902060028101829055600301548111806117b85750600083815260156020526040902060030154155b156117d25760008381526015602052604090206003018190555b6000838152601560205260409020600401548110806118005750600083815260156020526040902060040154155b1561181a5760008381526015602052604090206004018190555b60405185815233903090600080516020612f178339815191529060200160405180910390a330337f7ce543d1780f3bdc3dac42da06c95da802653cd1b212b8d74ec3e3c33ad7095c873461186c612161565b611876908c612d89565b6040805193845260208401929092529082015260600160405180910390a350506001808055979650505050505050565b60006118b0612161565b6118b8611fb7565b6118c06110c6565b6118ca9190612d89565b610bd79190612d89565b6000546001600160a01b031633146118fe5760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000611936338484612721565b9392505050565b60006002600154036119615760405162461bcd60e51b8152600401610af490612dd5565b6002600155428310156119a95760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610af4565b33600090815260166020526040902054439003611a255760405162461bcd60e51b815260206004820152603460248201527f427579696e6720616e642073656c6c696e6720696e207468652073616d6520626044820152736c6f636b206973206e6f7420616c6c6f7765642160601b6064820152608401610af4565b33600081815260026020526040902054851115611a845760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c2061626f766520746f6b656e20616d6f756e7400006044820152606401610af4565b30600090815260026020526040812054611a9f908790612e44565b600f54611aac9190612e0c565b600e54611ab99190612e57565b9050600060646005546064611ace9190612e57565b611ad89084612d89565b611ae29190612e0c565b90506000611af08284612e57565b905085831015611b425760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610af4565b3360009081526004602052604081205460ff16611bad576040516001600160a01b038616908390600081818185875af1925050503d8060008114611ba2576040519150601f19603f3d011682016040523d82523d6000602084013e611ba7565b606091505b50611bfd565b6040516001600160a01b038616908590600081818185875af1925050503d8060008114611bf6576040519150601f19603f3d011682016040523d82523d6000602084013e611bfb565b606091505b505b50905080611c4d5760405162461bcd60e51b815260206004820152601760248201527f424e422f455448207472616e73666572206661696c65640000000000000000006044820152606401610af4565b6001600160a01b038516600090815260026020526040902054611c71908a90612e57565b6001600160a01b03861660009081526002602090815260408083209390935533825260049052205460ff16611cb35782600954611cae9190612e44565b611cb7565b6009545b600955600e54611cc8908590612e57565b600e5530600090815260026020526040902054611ce6908a90612e44565b306000908152600260205260408120919091554290611d03612161565b611d0d9087612d89565b90508060126000828254611d219190612e44565b90915550503360009081526010602052604081208054839290611d45908490612e44565b909155505060008281526011602052604081208054839290611d68908490612e44565b92505081905550600160136000828254611d829190612e44565b90915550506013546000908152601460205260408120839055611da3612161565b611dab611fb7565b611db59190612d89565b60008481526015602052604081208581556001015491925003611e255760156000601460006001601354611de99190612e57565b81526020019081526020016000205481526020019081526020016000206002015460156000858152602001908152602001600020600101819055505b60008381526015602052604090206002810182905560030154811180611e5a5750600083815260156020526040902060030154155b15611e745760008381526015602052604090206003018190555b600083815260156020526040902060040154811080611ea25750600083815260156020526040902060040154155b15611ebc5760008381526015602052604090206004018190555b6040518c815230906001600160a01b038a1690600080516020612f178339815191529060200160405180910390a33360009081526004602052604090205460ff1615611f4c57604080518d815260208101899052908101839052339030907f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e9060600160405180910390a3611fa2565b33307f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e8e88611f79612161565b611f83908b612d89565b6040805193845260208401929092529082015260600160405180910390a35b505060018080559a9950505050505050505050565b600080600e5411611ff95760405162461bcd60e51b815260206004820152600c60248201526b4e6f204c697175696469747960a01b6044820152606401610af4565b30600090815260026020526040902054600e54610bd79190612e0c565b6000546001600160a01b031633146120405760405162461bcd60e51b8152600401610af490612da0565b600e5430600090815260026020526040812054909190612061903490612d89565b61206b9190612e0c565b336000908152600260205260409020549091508111156120c25760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b6044820152606401610af4565b600e546120cf3482612e44565b600e5530600090815260026020526040812080548492906120f1908490612e44565b90915550503360009081526002602052604081208054849290612115908490612e57565b9091555050600e54600f54829161212b91612d89565b6121359190612e0c565b600f5560405182815230903390600080516020612f178339815191529060200160405180910390a35050565b60175460185460408051630dfe168160e01b815290516000936001600160a01b039081169385939116918491630dfe16819160048083019260209291908290030181865afa1580156121b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121db9190612e6a565b6001600160a01b03161461225057816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612227573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224b9190612e6a565b6122b2565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561228e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b29190612e6a565b9050600080836001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156122f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123199190612ea3565b506001600160701b031691506001600160701b03169150601860009054906101000a90046001600160a01b03166001600160a01b0316846001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561238d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b19190612e6a565b6001600160a01b03161461243357836001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156123fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124219190612ea3565b506001600160701b0390811693501690505b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124979190612ef3565b6124a290600a612d7a565b6124ac9084612d89565b90506124b88282612e0c565b9550505050505090565b6000546001600160a01b031633146124ec5760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b0381166125515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610af4565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146125d65760405162461bcd60e51b8152600401610af490612da0565b60646125e28284612e44565b1461262f5760405162461bcd60e51b815260206004820152601960248201527f53756d206f6620736861726573206d75737420626520313030000000000000006044820152606401610af4565b600c91909155600d55565b6000546001600160a01b031633146126645760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b03808416600090815260036020908152604080832093861683529290522054600019811461271b578181101561270e5760405162461bcd60e51b815260206004820152601d60248201527f53524732303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610af4565b61271b8484848403612999565b50505050565b60006001600160a01b0383161580159061274457506001600160a01b0383163014155b61279b5760405162461bcd60e51b815260206004820152602260248201527f7472616e7366657220746f20746865207a65726f2061646472657373206f7220604482015261434160f01b6064820152608401610af4565b600082116127fd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610af4565b6001600160a01b03831660009081526007602052604090205460ff168061284957506008546001600160a01b038416600090815260026020526040902054612846908490612e44565b11155b61288c5760405162461bcd60e51b81526020600482015260146024820152734d61782077616c6c65742065786365656465642160601b6044820152606401610af4565b6001600160a01b0384166000908152600260205260409020546128b0908390612e57565b6001600160a01b0380861660009081526002602052604080822093909355908516815220546128e0908390612e44565b6001600160a01b038085166000818152600260205260409081902093909355915190861690600080516020612f17833981519152906129229086815260200190565b60405180910390a35060019392505050565b6001600160a01b038216600090815260026020526040902054612958908290612e44565b6001600160a01b038316600090815260026020526040808220929092553081522054612985908290612e57565b306000908152600260205260409020555050565b6001600160a01b0383166129fb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610af4565b6001600160a01b038216612a5c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610af4565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208083528351808285015260005b81811015612aea57858101830151858201604001528201612ace565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612b2057600080fd5b50565b60008060408385031215612b3657600080fd5b8235612b4181612b0b565b946020939093013593505050565b60008060408385031215612b6257600080fd5b8235612b6d81612b0b565b91506020830135612b7d81612b0b565b809150509250929050565b600060208284031215612b9a57600080fd5b813561193681612b0b565b600060208284031215612bb757600080fd5b5035919050565b60008060408385031215612bd157600080fd5b50508035926020909101359150565b600080600060608486031215612bf557600080fd5b8335612c0081612b0b565b92506020840135612c1081612b0b565b929592945050506040919091013590565b60008060408385031215612c3457600080fd5b8235612c3f81612b0b565b915060208301358015158114612b7d57600080fd5b600080600060608486031215612c6957600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612cd1578160001904821115612cb757612cb7612c80565b80851615612cc457918102915b93841c9390800290612c9b565b509250929050565b600082612ce857506001610bb5565b81612cf557506000610bb5565b8160018114612d0b5760028114612d1557612d31565b6001915050610bb5565b60ff841115612d2657612d26612c80565b50506001821b610bb5565b5060208310610133831016604e8410600b8410161715612d54575081810a610bb5565b612d5e8383612c96565b8060001904821115612d7257612d72612c80565b029392505050565b600061193660ff841683612cd9565b8082028115828204841417610bb557610bb5612c80565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600082612e2957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052600160045260246000fd5b80820180821115610bb557610bb5612c80565b81810381811115610bb557610bb5612c80565b600060208284031215612e7c57600080fd5b815161193681612b0b565b80516001600160701b0381168114612e9e57600080fd5b919050565b600080600060608486031215612eb857600080fd5b612ec184612e87565b9250612ecf60208501612e87565b9150604084015163ffffffff81168114612ee857600080fd5b809150509250925092565b600060208284031215612f0557600080fd5b815160ff8116811461193657600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220893f225586137da88d5b98ad2229843777935be15a78dd070329ab9cd3fc1dab64736f6c63430008110033

Deployed Bytecode Sourcemap

3194:19505:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6829:83;;;;;;;;;;-1:-1:-1;6899:5:0;;;;;;;;;;;;-1:-1:-1;;;6899:5:0;;;;6829:83;;;;;;;:::i;:::-;;;;;;;;18015:89;;;;;;;;;;-1:-1:-1;18087:9:0;;18015:89;;;713:25:1;;;701:2;686:18;18015:89:0;567:177:1;7106:450:0;;;;;;;;;;-1:-1:-1;7106:450:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;7106:450:0;1205:187:1;6396:102:0;;;;;;;;;;;;;:::i;5052:34::-;;;;;;;;;;;;;;;;21405:444;;;;;;;;;;-1:-1:-1;21405:444:0;;;;;:::i;:::-;;:::i;:::-;;19565:392;;;;;;;;;;;;;:::i;18179:202::-;;;;;;;;;;-1:-1:-1;18179:202:0;;;;;:::i;:::-;;:::i;20260:271::-;;;;;;;;;;-1:-1:-1;20260:271:0;;;;;:::i;:::-;;:::i;19180:377::-;;;;;;;;;;-1:-1:-1;19180:377:0;;;;;:::i;:::-;;:::i;18389:431::-;;;;;;;;;;-1:-1:-1;18389:431:0;;;;;:::i;:::-;;:::i;8663:335::-;;;;;;;;;;-1:-1:-1;8663:335:0;;;;;:::i;:::-;;:::i;5150:52::-;;;;;;;;;;;;5192:10;5150:52;;7694:118;;;;;;;;;;;;;:::i;7015:83::-;;;;;;;;;;-1:-1:-1;7015:83:0;;3922:1;3083:36:1;;3071:2;3056:18;7015:83:0;2941:184:1;4359:37:0;;;;;;;;;;;;4393:3;4359:37;;4015:61;;;;;;;;;;;;;:::i;4242:43::-;;;;;;;;;;-1:-1:-1;4242:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4694:74;;;;;;;;;;-1:-1:-1;4694:74:0;;;;-1:-1:-1;;;;;4694:74:0;;;;;;-1:-1:-1;;;;;3294:32:1;;;3276:51;;3264:2;3249:18;4694:74:0;3130:203:1;5282:39:0;;;;;;;;;;-1:-1:-1;5282:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;7564:122;;;;;;;;;;-1:-1:-1;7564:122:0;;;;;:::i;:::-;;:::i;4617:70::-;;;;;;;;;;-1:-1:-1;4617:70:0;;;;-1:-1:-1;;;;;4617:70:0;;;5328:30;;;;;;;;;;;;;;;;4102:44;;;;;;;;;;-1:-1:-1;4102:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;6506:119;;;;;;;;;;-1:-1:-1;6506:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6599:18:0;6572:7;6599:18;;;:9;:18;;;;;;;6506:119;19965:287;;;;;;;;;;-1:-1:-1;19965:287:0;;;;;:::i;:::-;;:::i;2750:148::-;;;;;;;;;;;;;:::i;5391:22::-;;;;;;;;;;;;;;;;4831:33;;;;;;;;;;;;;;;;7820:284;;;;;;;;;;-1:-1:-1;7820:284:0;;;;;:::i;:::-;;:::i;4433:47::-;;;;;;;;;;-1:-1:-1;4433:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2536:79;;;;;;;;;;-1:-1:-1;2574:7:0;2601:6;-1:-1:-1;;;;;2601:6:0;2536:79;;10915:3294;;;;;;:::i;:::-;;:::i;21079:141::-;;;;;;;;;;;;;:::i;6920:87::-;;;;;;;;;;-1:-1:-1;6992:7:0;;;;;;;;;;;;-1:-1:-1;;;6992:7:0;;;;6920:87;;5234:41;;;;;;;;;;-1:-1:-1;5234:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;4292:27;;;;;;;;;;;;;;;;4326:26;;;;;;;;;;;;;;;;8112:122;;;;;;;;;;-1:-1:-1;8112:122:0;;;;;:::i;:::-;;:::i;5625:54::-;;;;;;;;;;-1:-1:-1;5625:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4018:25:1;;;4074:2;4059:18;;4052:34;;;;4102:18;;;4095:34;;;;4160:2;4145:18;;4138:34;4203:3;4188:19;;4181:35;4005:3;3990:19;5625:54:0;3759:463:1;8433:188:0;;;;;;;;;;-1:-1:-1;8433:188:0;;;;;:::i;:::-;;:::i;4560:29::-;;;;;;;;;;;;;;;;14541:3428;;;;;;;;;;-1:-1:-1;14541:3428:0;;;;;:::i;:::-;;:::i;5792:94::-;;;;;;;;;;;;5844:42;5792:94;;22529:167;;;;;;;;;;;;;:::i;6633:188::-;;;;;;;;;;-1:-1:-1;6633:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;6785:19:0;;;6753:7;6785:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6633:188;4487:42;;;;;;;;;;;;;;;;20539:532;;;:::i;5093:50::-;;;;;;;;;;;;;;;;4795:29;;;;;;;;;;;;;;;;21904:561;;;;;;;;;;;;;:::i;2906:281::-;;;;;;;;;;-1:-1:-1;2906:281:0;;;;;:::i;:::-;;:::i;18828:344::-;;;;;;;;;;-1:-1:-1;18828:344:0;;;;;:::i;:::-;;:::i;5420:46::-;;;;;;;;;;-1:-1:-1;5420:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;8242:153;;;;;;;;;;-1:-1:-1;8242:153:0;;;;;:::i;:::-;;:::i;7106:450::-;7208:4;-1:-1:-1;;;;;7238:21:0;;7230:68;;;;-1:-1:-1;;;7230:68:0;;4750:2:1;7230:68:0;;;4732:21:1;4789:2;4769:18;;;4762:30;4828:34;4808:18;;;4801:62;-1:-1:-1;;;4879:18:1;;;4872:32;4921:19;;7230:68:0;;;;;;;;;7331:10;7309:110;;;;-1:-1:-1;;;7309:110:0;;5153:2:1;7309:110:0;;;5135:21:1;5192:2;5172:18;;;5165:30;5231:34;5211:18;;;5204:62;-1:-1:-1;;;5282:18:1;;;5275:34;5326:19;;7309:110:0;4951:400:1;7309:110:0;7444:10;7432:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7432:32:0;;;;;;;;;;;;:41;;;7489:37;713:25:1;;;7432:32:0;;7444:10;7489:37;;686:18:1;7489:37:0;;;;;;;-1:-1:-1;7544:4:0;7106:450;;;;;:::o;6396:102::-;6451:7;3972:13;3922:1;3972:2;:13;:::i;:::-;4054:22;;:5;:22;:::i;:::-;6471:19;;6396:102;:::o;21405:444::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21555:27:0;::::1;::::0;;::::1;::::0;:61:::1;;-1:-1:-1::0;;;;;;21586:30:0;::::1;::::0;::::1;21555:61;21533:153;;;::::0;-1:-1:-1;;;21533:153:0;;7607:2:1;21533:153:0::1;::::0;::::1;7589:21:1::0;7646:2;7626:18;;;7619:30;7685:34;7665:18;;;7658:62;-1:-1:-1;;;7736:18:1;;;7729:40;7786:19;;21533:153:0::1;7405:406:1::0;21533:153:0::1;21699:17;:33:::0;;-1:-1:-1;;;;;21699:33:0;;::::1;-1:-1:-1::0;;;;;;21699:33:0;;::::1;::::0;::::1;::::0;;;21743:13:::1;:32:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;21791:50:::1;::::0;;8028:34:1;;;8093:2;8078:18;;8071:43;;;;21791:50:0::1;::::0;7963:18:1;21791:50:0::1;;;;;;;;21405:444:::0;;:::o;19565:392::-;548:1;694:7;;:19;686:63;;;;-1:-1:-1;;;686:63:0;;;;;;;:::i;:::-;548:1;760:7;:18;2663:6:::1;::::0;-1:-1:-1;;;;;2663:6:0::1;2166:10:::0;2663:22:::1;2655:67;;;;-1:-1:-1::0;;;2655:67:0::1;;;;;;;:::i;:::-;19663:10:::2;::::0;19715:9:::2;::::0;19702:10:::2;::::0;19639::::2;::::0;-1:-1:-1;;;;;19663:10:0::2;::::0;4910:3:::2;::::0;19702:22:::2;::::0;19715:9;19702:22:::2;:::i;:::-;19701:39;;;;:::i;:::-;19655:100;::::0;::::2;::::0;;;;;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;19791:14:0::2;::::0;19847:13:::2;::::0;19834:10:::2;::::0;19638:117;;-1:-1:-1;19767:10:0::2;::::0;-1:-1:-1;;;;;19791:14:0;;::::2;::::0;4910:3:::2;::::0;19834:26:::2;::::0;::::2;:::i;:::-;19833:43;;;;:::i;:::-;19783:108;::::0;::::2;::::0;;;;;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19766:125;;;19909:5;:14;;;;;19918:5;19909:14;19902:22;;;;:::i;:::-;-1:-1:-1::0;;19948:1:0::2;19935:10;:14:::0;504:1;801:22;;19565:392::o;18179:202::-;18244:7;18360:13;:11;:13::i;:::-;18337:4;18319:24;;;;:9;:24;;;;;;;18306:9;;-1:-1:-1;;;;;18286:17:0;;;;;;;;;:29;;18306:9;18286:29;:::i;:::-;18285:58;;;;:::i;:::-;18284:89;;;;:::i;20260:271::-;20395:4;20324:7;20377:24;;;:9;:24;;;;;;20366:8;;20324:7;;20366:35;;;:::i;:::-;20463:4;20412:18;20445:24;;;:9;:24;;;;;;20344:57;;-1:-1:-1;20412:18:0;20445:35;;20472:8;;20445:35;:::i;:::-;20433:8;;:48;;;;:::i;:::-;20412:69;-1:-1:-1;20499:24:0;20412:69;20499:11;:24;:::i;:::-;20492:31;20260:271;-1:-1:-1;;;;20260:271:0:o;19180:377::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19335:27:0;::::1;::::0;;::::1;::::0;:62:::1;;-1:-1:-1::0;;;;;;19366:31:0;::::1;::::0;::::1;19335:62;19313:152;;;::::0;-1:-1:-1;;;19313:152:0;;9514:2:1;19313:152:0::1;::::0;::::1;9496:21:1::0;9553:2;9533:18;;;9526:30;9592:34;9572:18;;;9565:62;-1:-1:-1;;;9643:18:1;;;9636:38;9691:19;;19313:152:0::1;9312:404:1::0;19313:152:0::1;19478:10;:26:::0;;-1:-1:-1;;;;;19478:26:0;;::::1;-1:-1:-1::0;;;;;;19478:26:0;;::::1;;::::0;;;19515:14:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;19180:377::o;18389:431::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;18536:2:::1;18523:9;:15;;:52;;;;;18573:2;18559:10;:16;;18523:52;:89;;;;;18609:3;18596:9;:16;;18523:89;:127;;;;;18647:3;18633:10;:17;;18523:127;18501:194;;;::::0;-1:-1:-1;;;18501:194:0;;9923:2:1;18501:194:0::1;::::0;::::1;9905:21:1::0;9962:2;9942:18;;;9935:30;-1:-1:-1;;;9981:18:1;;;9974:47;10038:18;;18501:194:0::1;9721:341:1::0;18501:194:0::1;18708:6;:18:::0;;;18737:7:::1;:20:::0;;;18775:37:::1;::::0;;10241:25:1;;;10297:2;10282:18;;10275:34;;;18775:37:0::1;::::0;10214:18:1;18775:37:0::1;10067:248:1::0;8663:335:0;8797:4;8832:10;8892:40;8908:6;8832:10;8925:6;8892:15;:40::i;:::-;8950;8964:6;8972:9;8983:6;8950:13;:40::i;:::-;8943:47;8663:335;-1:-1:-1;;;;;8663:335:0:o;7694:118::-;4975:42;7747:7;7789:15;;;:9;:15;;;;3972:13;3922:1;3972:2;:13;:::i;:::-;4054:22;;:5;:22;:::i;:::-;7774:30;;;;:::i;4015:61::-;3972:13;3922:1;3972:2;:13;:::i;:::-;4054:22;;:5;:22;:::i;:::-;4015:61;:::o;7564:122::-;7619:4;7643:35;7651:7;-1:-1:-1;;7643:7:0;:35::i;19965:287::-;20063:7;20088:19;20134:11;20122:9;;:23;;;;:::i;:::-;20110:8;;:36;;;;:::i;:::-;20088:58;;20157:20;20191:9;;20180:8;;:20;;;;:::i;2750:148::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;2857:1:::1;2841:6:::0;;2820:40:::1;::::0;-1:-1:-1;;;;;2841:6:0;;::::1;::::0;2820:40:::1;::::0;2857:1;;2820:40:::1;2888:1;2871:19:::0;;-1:-1:-1;;;;;;2871:19:0::1;::::0;;2750:148::o;7820:284::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;7944:3:::1;3972:13;3922:1;3972:2;:13;:::i;:::-;4054:22;::::0;:5:::1;:22;:::i;:::-;7929:18;;;;:::i;:::-;7917:8;:30;;7895:134;;;::::0;-1:-1:-1;;;7895:134:0;;10522:2:1;7895:134:0::1;::::0;::::1;10504:21:1::0;10561:2;10541:18;;;10534:30;10600:34;10580:18;;;10573:62;-1:-1:-1;;;10651:18:1;;;10644:52;10713:19;;7895:134:0::1;10320:418:1::0;7895:134:0::1;8040:6;:17:::0;;;8073:23:::1;::::0;713:25:1;;;8073:23:0::1;::::0;701:2:1;686:18;8073:23:0::1;;;;;;;7820:284:::0;:::o;10915:3294::-;11041:4;548:1;694:7;;:19;686:63;;;;-1:-1:-1;;;686:63:0;;;;;;;:::i;:::-;548:1;760:7;:18;11116:15:::1;11104:27:::0;::::1;;11096:56;;;::::0;-1:-1:-1;;;11096:56:0;;10945:2:1;11096:56:0::1;::::0;::::1;10927:21:1::0;10984:2;10964:18;;;10957:30;-1:-1:-1;;;11003:18:1;;;10996:46;11059:18;;11096:56:0::1;10743:340:1::0;11096:56:0::1;11206:10;11192:25;::::0;;;:13:::1;:25;::::0;;;;11220:12:::1;11192:40:::0;;11282:9:::1;::::0;11274:52:::1;;;::::0;-1:-1:-1;;;11274:52:0;;11290:2:1;11274:52:0::1;::::0;::::1;11272:21:1::0;11329:2;11309:18;;;11302:30;11368:28;11348:18;;;11341:56;11414:18;;11274:52:0::1;11088:350:1::0;11274:52:0::1;5192:10;11448:15;:34;;:85;;;-1:-1:-1::0;11503:10:0::1;5844:42;11503:30;11448:85;11426:154;;;::::0;-1:-1:-1;;;11426:154:0;;11645:2:1;11426:154:0::1;::::0;::::1;11627:21:1::0;11684:2;11664:18;;;11657:30;-1:-1:-1;;;11703:18:1;;;11696:49;11762:18;;11426:154:0::1;11443:343:1::0;11426:154:0::1;11655:10;11623:17;11643:23:::0;;;:11:::1;:23;::::0;;;;;::::1;;:94;;4393:3;11720:6;;11708:9;:18;;;;:::i;:::-;11707:30;;;;:::i;:::-;11643:94;;;11682:9;11643:94;11623:114;;11793:20;11881:9;;11869;:21;;;;:::i;:::-;11857:8;;:34;;;;:::i;:::-;11834:4;11816:24;::::0;;;:9:::1;:24;::::0;;;;;:76:::1;::::0;;::::1;:::i;:::-;11997:6;::::0;11967:10:::1;11957:21;::::0;;;:9:::1;:21;::::0;;;;;11793:99;;-1:-1:-1;11997:6:0;11957:36:::1;::::0;11793:99;;11957:36:::1;:::i;:::-;:46;;:94;;;-1:-1:-1::0;12040:10:0::1;12024:27;::::0;;;:15:::1;:27;::::0;;;;;::::1;;11957:94;11935:163;;;::::0;-1:-1:-1;;;11935:163:0;;11993:2:1;11935:163:0::1;::::0;::::1;11975:21:1::0;12032:2;12012:18;;;12005:30;-1:-1:-1;;;12051:18:1;;;12044:49;12110:18;;11935:163:0::1;11791:343:1::0;11935:163:0::1;12164:1;12149:12;:16;12141:66;;;::::0;-1:-1:-1;;;12141:66:0;;12341:2:1;12141:66:0::1;::::0;::::1;12323:21:1::0;12380:2;12360:18;;;12353:30;12419:34;12399:18;;;12392:62;-1:-1:-1;;;12470:18:1;;;12463:35;12515:19;;12141:66:0::1;12139:401:1::0;12141:66:0::1;12276:11;12260:12;:27;;12252:66;;;::::0;-1:-1:-1;;;12252:66:0;;12747:2:1;12252:66:0::1;::::0;::::1;12729:21:1::0;12786:2;12766:18;;;12759:30;12825:28;12805:18;;;12798:56;12871:18;;12252:66:0::1;12545:350:1::0;12252:66:0::1;12384:29;12388:10;12400:12;12384:3;:29::i;:::-;12483:17;12503:21;12515:9:::0;12503::::1;:21;:::i;:::-;12483:41;;12561:9;12548:10;;:22;;;;:::i;:::-;12535:10;:35:::0;12593:9:::1;::::0;:21:::1;::::0;12605:9;;12593:21:::1;:::i;:::-;12581:9;:33:::0;12668:15:::1;12652:13;12726;:11;:13::i;:::-;12714:25;::::0;:9:::1;:25;:::i;:::-;12694:45;;12765:9;12750:11;;:24;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12792:10:0::1;12785:18;::::0;;;:6:::1;:18;::::0;;;;:31;;12807:9;;12785:18;:31:::1;::::0;12807:9;;12785:31:::1;:::i;:::-;::::0;;;-1:-1:-1;;12827:11:0::1;::::0;;;:4:::1;:11;::::0;;;;:24;;12842:9;;12827:11;:24:::1;::::0;12842:9;;12827:24:::1;:::i;:::-;;;;;;;;12909:1;12898:7;;:12;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12933:7:0::1;::::0;12921:20:::1;::::0;;;:11:::1;:20;::::0;;;;:28;;;12996:13:::1;:11;:13::i;:::-;12977:16;:14;:16::i;:::-;:32;;;;:::i;:::-;13020:22;::::0;;;:15:::1;:22;::::0;;;;:35;;;13070:27:::1;;::::0;12960:49;;-1:-1:-1;13070:32:0;13066:405:::1;;13123:7;;13134:1;13123:12:::0;13119:341:::1;;13273:13;:11;:13::i;:::-;3972;3922:1;3972:2;:13;:::i;:::-;4054:22;::::0;:5:::1;:22;:::i;:::-;13221:9;13209;;:21;;;;:::i;:::-;13208:40;;;;:::i;:::-;13207:79;;;;:::i;:::-;13156:22;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;:130:::0;13119:341:::1;;;13357:15;:81;13395:11;:24;13417:1;13407:7;;:11;;;;:::i;:::-;13395:24;;;;;;;;;;;;13357:81;;;;;;;;;;;:87;;;13327:15;:22;13343:5;13327:22;;;;;;;;;;;:27;;:117;;;;13119:341;13481:22;::::0;;;:15:::1;:22;::::0;;;;:28:::1;::::0;::::1;:37:::0;;;13549:27:::1;;::::0;:36;-1:-1:-1;13549:36:0;:85:::1;;-1:-1:-1::0;13602:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;::::0;:32;13549:85:::1;13531:178;;;13661:22;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;:36:::0;;;13531:178:::1;13739:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:35;-1:-1:-1;13739:35:0;:83:::1;;-1:-1:-1::0;13791:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:31;13739:83:::1;13721:175;;;13849:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;:35:::0;;;13721:175:::1;13953:49;::::0;713:25:1;;;13977:10:0::1;::::0;13970:4:::1;::::0;-1:-1:-1;;;;;;;;;;;13953:49:0;701:2:1;686:18;13953:49:0::1;;;;;;;14072:4;14039:10;14018:161;14092:12:::0;14119:9:::1;14155:13;:11;:13::i;:::-;14143:25;::::0;:9;:25:::1;:::i;:::-;14018:161;::::0;;13102:25:1;;;13158:2;13143:18;;13136:34;;;;13186:18;;;13179:34;13090:2;13075:18;14018:161:0::1;;;;;;;-1:-1:-1::0;;14197:4:0::1;801:22:::0;;;14197:4;10915:3294;-1:-1:-1;;;;;;;10915:3294:0:o;21079:141::-;21126:7;21198:13;:11;:13::i;:::-;21179:16;:14;:16::i;:::-;21154:22;:20;:22::i;:::-;:41;;;;:::i;:::-;:57;;;;:::i;8112:122::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8198:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;8198:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8112:122::o;8433:188::-;8540:4;8569:44;8583:10;8595:9;8606:6;8569:13;:44::i;:::-;8562:51;8433:188;-1:-1:-1;;;8433:188:0:o;14541:3428::-;14677:4;548:1;694:7;;:19;686:63;;;;-1:-1:-1;;;686:63:0;;;;;;;:::i;:::-;548:1;760:7;:18;14747:15:::1;14735:27:::0;::::1;;14727:56;;;::::0;-1:-1:-1;;;14727:56:0;;10945:2:1;14727:56:0::1;::::0;::::1;10927:21:1::0;10984:2;10964:18;;;10957:30;-1:-1:-1;;;11003:18:1;;;10996:46;11059:18;;14727:56:0::1;10743:340:1::0;14727:56:0::1;14858:10;14844:25;::::0;;;:13:::1;:25;::::0;;;;;14873:12:::1;14844:41:::0;;14822:143:::1;;;::::0;-1:-1:-1;;;14822:143:0;;13426:2:1;14822:143:0::1;::::0;::::1;13408:21:1::0;13465:2;13445:18;;;13438:30;13504:34;13484:18;;;13477:62;-1:-1:-1;;;13555:18:1;;;13548:50;13615:19;;14822:143:0::1;13224:416:1::0;14822:143:0::1;14995:10;14978:14;15086:17:::0;;;:9:::1;:17;::::0;;;;;:32;-1:-1:-1;15086:32:0::1;15064:112;;;::::0;-1:-1:-1;;;15064:112:0;;13847:2:1;15064:112:0::1;::::0;::::1;13829:21:1::0;13886:2;13866:18;;;13859:30;13925:32;13905:18;;;13898:60;13975:18;;15064:112:0::1;13645:354:1::0;15064:112:0::1;15317:4;15241:17;15299:24:::0;;;:9:::1;:24;::::0;;;;;:38:::1;::::0;15326:11;;15299:38:::1;:::i;:::-;15287:8;;:51;;;;:::i;:::-;15261:9;;:78;;;;:::i;:::-;15241:98;;15350:17;4393:3;15394:7;;4393:3;15384:17;;;;:::i;:::-;15371:31;::::0;:9;:31:::1;:::i;:::-;15370:43;;;;:::i;:::-;15350:63:::0;-1:-1:-1;15424:17:0::1;15444:21;15350:63:::0;15444:9;:21:::1;:::i;:::-;15424:41;;15526:9;15513;:22;;15505:61;;;::::0;-1:-1:-1;;;15505:61:0;;12747:2:1;15505:61:0::1;::::0;::::1;12729:21:1::0;12786:2;12766:18;;;12759:30;12825:28;12805:18;;;12798:56;12871:18;;15505:61:0::1;12545:350:1::0;15505:61:0::1;15644:10;15611:15;15632:23:::0;;;:11:::1;:23;::::0;;;;;::::1;;:139;;15729:42;::::0;-1:-1:-1;;;;;15729:20:0;::::1;::::0;15757:9;;15729:42:::1;::::0;;;15757:9;15729:20;:42:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15632:139;;;15671:42;::::0;-1:-1:-1;;;;;15671:20:0;::::1;::::0;15699:9;;15671:42:::1;::::0;;;15699:9;15671:20;:42:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15632:139;15610:161;;;15790:10;15782:46;;;::::0;-1:-1:-1;;;15782:46:0;;14206:2:1;15782:46:0::1;::::0;::::1;14188:21:1::0;14245:2;14225:18;;;14218:30;14284:25;14264:18;;;14257:53;14327:18;;15782:46:0::1;14004:347:1::0;15782:46:0::1;-1:-1:-1::0;;;;;15906:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;;:31:::1;::::0;15926:11;;15906:31:::1;:::i;:::-;-1:-1:-1::0;;;;;15886:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;;;;:51;;;;16080:10:::1;16068:23:::0;;:11:::1;:23:::0;;;;::::1;;:87;;16146:9;16133:10;;:22;;;;:::i;:::-;16068:87;;;16107:10;;16068:87;16055:10;:100:::0;16178:9:::1;::::0;:21:::1;::::0;16190:9;;16178:21:::1;:::i;:::-;16166:9;:33:::0;16303:4:::1;16285:24;::::0;;;:9:::1;:24;::::0;;;;;:38:::1;::::0;16312:11;;16285:38:::1;:::i;:::-;16276:4;16258:24;::::0;;;:9:::1;:24;::::0;;;;:65;;;;16377:15:::1;::::0;16436:13:::1;:11;:13::i;:::-;16424:25;::::0;:9;:25:::1;:::i;:::-;16403:46;;16475:10;16460:11;;:25;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;16503:10:0::1;16496:18;::::0;;;:6:::1;:18;::::0;;;;:32;;16518:10;;16496:18;:32:::1;::::0;16518:10;;16496:32:::1;:::i;:::-;::::0;;;-1:-1:-1;;16539:11:0::1;::::0;;;:4:::1;:11;::::0;;;;:25;;16554:10;;16539:11;:25:::1;::::0;16554:10;;16539:25:::1;:::i;:::-;;;;;;;;16622:1;16611:7;;:12;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;16646:7:0::1;::::0;16634:20:::1;::::0;;;:11:::1;:20;::::0;;;;:28;;;16709:13:::1;:11;:13::i;:::-;16690:16;:14;:16::i;:::-;:32;;;;:::i;:::-;16733:22;::::0;;;:15:::1;:22;::::0;;;;:35;;;16783:27:::1;;::::0;16673:49;;-1:-1:-1;16783:32:0;16779:174:::1;;16862:15;:73;16896:11;:24;16918:1;16908:7;;:11;;;;:::i;:::-;16896:24;;;;;;;;;;;;16862:73;;;;;;;;;;;:79;;;16832:15;:22;16848:5;16832:22;;;;;;;;;;;:27;;:109;;;;16779:174;16963:22;::::0;;;:15:::1;:22;::::0;;;;:28:::1;::::0;::::1;:37:::0;;;17031:27:::1;;::::0;:36;-1:-1:-1;17031:36:0;:85:::1;;-1:-1:-1::0;17084:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;::::0;:32;17031:85:::1;17013:178;;;17143:22;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;:36:::0;;;17013:178:::1;17221:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:35;-1:-1:-1;17221:35:0;:83:::1;;-1:-1:-1::0;17273:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:31;17221:83:::1;17203:175;;;17331:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;:35:::0;;;17203:175:::1;17437:44;::::0;713:25:1;;;17462:4:0::1;::::0;-1:-1:-1;;;;;17437:44:0;::::1;::::0;-1:-1:-1;;;;;;;;;;;17437:44:0;701:2:1;686:18;17437:44:0::1;;;;;;;17508:10;17496:23;::::0;;;:11:::1;:23;::::0;;;;;::::1;;17492:448;;;17541:167;::::0;;13102:25:1;;;13158:2;13143:18;;13136:34;;;13186:18;;;13179:34;;;17596:10:0::1;::::0;17572:4:::1;::::0;17541:167:::1;::::0;13090:2:1;13075:18;17541:167:0::1;;;;;;;17492:448;;;17801:10;17777:4;17746:182;17830:11:::0;17860:9;17900:13:::1;:11;:13::i;:::-;17888:25;::::0;:9;:25:::1;:::i;:::-;17746:182;::::0;;13102:25:1;;;13158:2;13143:18;;13136:34;;;;13186:18;;;13179:34;13090:2;13075:18;17746:182:0::1;;;;;;;17492:448;-1:-1:-1::0;;17957:4:0::1;801:22:::0;;;17957:4;14541:3428;-1:-1:-1;;;;;;;;;;14541:3428:0:o;22529:167::-;22576:7;22616:1;22604:9;;:13;22596:38;;;;-1:-1:-1;;;22596:38:0;;14558:2:1;22596:38:0;;;14540:21:1;14597:2;14577:18;;;14570:30;-1:-1:-1;;;14616:18:1;;;14609:42;14668:18;;22596:38:0;14356:336:1;22596:38:0;22682:4;22664:24;;;;:9;:24;;;;;;22652:9;;:36;;22664:24;22652:36;:::i;20539:532::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;20677:9:::1;::::0;20642:4:::1;20601:19;20624:24:::0;;;:9:::1;:24;::::0;;;;;20601:19;;20677:9;20624:36:::1;::::0;20651:9:::1;::::0;20624:36:::1;:::i;:::-;20623:63;;;;:::i;:::-;20715:10;20705:21;::::0;;;:9:::1;:21;::::0;;;;;20601:85;;-1:-1:-1;20705:36:0;-1:-1:-1;20705:36:0::1;20697:67;;;::::0;-1:-1:-1;;;20697:67:0;;14899:2:1;20697:67:0::1;::::0;::::1;14881:21:1::0;14938:2;14918:18;;;14911:30;-1:-1:-1;;;14957:18:1;;;14950:48;15015:18;;20697:67:0::1;14697:342:1::0;20697:67:0::1;20794:9;::::0;20826:21:::1;20838:9;20794::::0;20826:21:::1;:::i;:::-;20814:9;:33:::0;20876:4:::1;20858:24;::::0;;;:9:::1;:24;::::0;;;;:39;;20886:11;;20858:24;:39:::1;::::0;20886:11;;20858:39:::1;:::i;:::-;::::0;;;-1:-1:-1;;20918:10:0::1;20908:21;::::0;;;:9:::1;:21;::::0;;;;:36;;20933:11;;20908:21;:36:::1;::::0;20933:11;;20908:36:::1;:::i;:::-;::::0;;;-1:-1:-1;;20978:9:0::1;::::0;20967:8:::1;::::0;20991:6;;20967:20:::1;::::0;::::1;:::i;:::-;20966:31;;;;:::i;:::-;20955:8;:42:::0;21015:48:::1;::::0;713:25:1;;;21044:4:0::1;::::0;21024:10:::1;::::0;-1:-1:-1;;;;;;;;;;;21015:48:0;701:2:1;686:18;21015:48:0::1;;;;;;;20590:481;;20539:532::o:0;21904:561::-;22001:17;;22063:13;;22046;;;-1:-1:-1;;;22046:13:0;;;;21948:7;;-1:-1:-1;;;;;22001:17:0;;;;21948:7;;22063:13;;;22001:17;;22046:11;;:13;;;;;;;;;;;;;;22001:17;22046:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22046:30:0;;:104;;22136:4;-1:-1:-1;;;;;22136:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22046:104;;;22099:4;-1:-1:-1;;;;;22099:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22030:120;;22164:12;22178;22196:4;-1:-1:-1;;;;;22196:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22163:51;-1:-1:-1;;;;;22163:51:0;;;-1:-1:-1;;;;;22163:51:0;;;22248:13;;;;;;;;;-1:-1:-1;;;;;22248:13:0;-1:-1:-1;;;;;22231:30:0;:4;-1:-1:-1;;;;;22231:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22231:30:0;;22227:98;;22295:4;-1:-1:-1;;;;;22295:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;22278:35:0;;;;-1:-1:-1;22278:35:0;;-1:-1:-1;22227:98:0;22335:12;22361:6;-1:-1:-1;;;;;22361:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22357:21;;:2;:21;:::i;:::-;22350:28;;:4;:28;:::i;:::-;22335:43;-1:-1:-1;22397:11:0;22404:4;22335:43;22397:11;:::i;:::-;22389:20;;;;;;;21904:561;:::o;2906:281::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3009:22:0;::::1;2987:110;;;::::0;-1:-1:-1;;;2987:110:0;;16428:2:1;2987:110:0::1;::::0;::::1;16410:21:1::0;16467:2;16447:18;;;16440:30;16506:34;16486:18;;;16479:62;-1:-1:-1;;;16557:18:1;;;16550:36;16603:19;;2987:110:0::1;16226:402:1::0;2987:110:0::1;3134:6;::::0;;3113:38:::1;::::0;-1:-1:-1;;;;;3113:38:0;;::::1;::::0;3134:6;::::1;::::0;3113:38:::1;::::0;::::1;3162:6;:17:::0;;-1:-1:-1;;;;;;3162:17:0::1;-1:-1:-1::0;;;;;3162:17:0;;;::::1;::::0;;;::::1;::::0;;2906:281::o;18828:344::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;4910:3:::1;18984:31;18999:16:::0;18984:12;:31:::1;:::i;:::-;:47;18962:122;;;::::0;-1:-1:-1;;;18962:122:0;;16835:2:1;18962:122:0::1;::::0;::::1;16817:21:1::0;16874:2;16854:18;;;16847:30;16913:27;16893:18;;;16886:55;16958:18;;18962:122:0::1;16633:349:1::0;18962:122:0::1;19097:9;:24:::0;;;;19132:13:::1;:32:::0;18828:344::o;8242:153::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8355:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;8355:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8242:153::o;9902:545::-;-1:-1:-1;;;;;10064:18:0;;;10037:24;10064:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10106:37:0;;10102:338;;10206:6;10186:16;:26;;10160:117;;;;-1:-1:-1;;;10160:117:0;;17189:2:1;10160:117:0;;;17171:21:1;17228:2;17208:18;;;17201:30;17267:31;17247:18;;;17240:59;17316:18;;10160:117:0;16987:353:1;10160:117:0;10362:51;10371:5;10378:7;10406:6;10387:16;:25;10362:8;:51::i;:::-;10026:421;9902:545;;;:::o;9036:858::-;9162:4;-1:-1:-1;;;;;9234:23:0;;;;;;:53;;-1:-1:-1;;;;;;9261:26:0;;9282:4;9261:26;;9234:53;9212:137;;;;-1:-1:-1;;;9212:137:0;;17547:2:1;9212:137:0;;;17529:21:1;17586:2;17566:18;;;17559:30;17625:34;17605:18;;;17598:62;-1:-1:-1;;;17676:18:1;;;17669:32;17718:19;;9212:137:0;17345:398:1;9212:137:0;9377:1;9368:6;:10;9360:64;;;;-1:-1:-1;;;9360:64:0;;17950:2:1;9360:64:0;;;17932:21:1;17989:2;17969:18;;;17962:30;18028:34;18008:18;;;18001:62;-1:-1:-1;;;18079:18:1;;;18072:39;18128:19;;9360:64:0;17748:405:1;9360:64:0;-1:-1:-1;;;;;9457:26:0;;;;;;:15;:26;;;;;;;;;:86;;-1:-1:-1;9537:6:0;;-1:-1:-1;;;;;9504:20:0;;;;;;:9;:20;;;;;;:29;;9527:6;;9504:29;:::i;:::-;:39;;9457:86;9435:156;;;;-1:-1:-1;;;9435:156:0;;18360:2:1;9435:156:0;;;18342:21:1;18399:2;18379:18;;;18372:30;-1:-1:-1;;;18418:18:1;;;18411:50;18478:18;;9435:156:0;18158:344:1;9435:156:0;-1:-1:-1;;;;;9657:17:0;;;;;;:9;:17;;;;;;:26;;9677:6;;9657:26;:::i;:::-;-1:-1:-1;;;;;9637:17:0;;;;;;;:9;:17;;;;;;:46;;;;9755:20;;;;;;;:29;;9778:6;;9755:29;:::i;:::-;-1:-1:-1;;;;;9732:20:0;;;;;;;:9;:20;;;;;;;:52;;;;9829:35;;;;;;-1:-1:-1;;;;;;;;;;;9829:35:0;;;9857:6;713:25:1;;701:2;686:18;;567:177;9829:35:0;;;;;;;;-1:-1:-1;9882:4:0;9036:858;;;;;:::o;14263:196::-;-1:-1:-1;;;;;14352:19:0;;;;;;:9;:19;;;;;;:28;;14374:6;;14352:28;:::i;:::-;-1:-1:-1;;;;;14330:19:0;;;;;;:9;:19;;;;;;:50;;;;14436:4;14418:24;;;;:33;;14445:6;;14418:33;:::i;:::-;14409:4;14391:24;;;;:9;:24;;;;;:60;-1:-1:-1;;14263:196:0:o;10455:380::-;-1:-1:-1;;;;;10591:19:0;;10583:68;;;;-1:-1:-1;;;10583:68:0;;18709:2:1;10583:68:0;;;18691:21:1;18748:2;18728:18;;;18721:30;18787:34;18767:18;;;18760:62;-1:-1:-1;;;18838:18:1;;;18831:34;18882:19;;10583:68:0;18507:400:1;10583:68:0;-1:-1:-1;;;;;10670:21:0;;10662:68;;;;-1:-1:-1;;;10662:68:0;;19114:2:1;10662:68:0;;;19096:21:1;19153:2;19133:18;;;19126:30;19192:34;19172:18;;;19165:62;-1:-1:-1;;;19243:18:1;;;19236:32;19285:19;;10662:68:0;18912:398:1;10662:68:0;-1:-1:-1;;;;;10743:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10795:32;;713:25:1;;;10795:32:0;;686:18:1;10795:32:0;;;;;;;10455:380;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:388::-;1465:6;1473;1526:2;1514:9;1505:7;1501:23;1497:32;1494:52;;;1542:1;1539;1532:12;1494:52;1581:9;1568:23;1600:31;1625:5;1600:31;:::i;:::-;1650:5;-1:-1:-1;1707:2:1;1692:18;;1679:32;1720:33;1679:32;1720:33;:::i;:::-;1772:7;1762:17;;;1397:388;;;;;:::o;1790:247::-;1849:6;1902:2;1890:9;1881:7;1877:23;1873:32;1870:52;;;1918:1;1915;1908:12;1870:52;1957:9;1944:23;1976:31;2001:5;1976:31;:::i;2042:180::-;2101:6;2154:2;2142:9;2133:7;2129:23;2125:32;2122:52;;;2170:1;2167;2160:12;2122:52;-1:-1:-1;2193:23:1;;2042:180;-1:-1:-1;2042:180:1:o;2227:248::-;2295:6;2303;2356:2;2344:9;2335:7;2331:23;2327:32;2324:52;;;2372:1;2369;2362:12;2324:52;-1:-1:-1;;2395:23:1;;;2465:2;2450:18;;;2437:32;;-1:-1:-1;2227:248:1:o;2480:456::-;2557:6;2565;2573;2626:2;2614:9;2605:7;2601:23;2597:32;2594:52;;;2642:1;2639;2632:12;2594:52;2681:9;2668:23;2700:31;2725:5;2700:31;:::i;:::-;2750:5;-1:-1:-1;2807:2:1;2792:18;;2779:32;2820:33;2779:32;2820:33;:::i;:::-;2480:456;;2872:7;;-1:-1:-1;;;2926:2:1;2911:18;;;;2898:32;;2480:456::o;3338:416::-;3403:6;3411;3464:2;3452:9;3443:7;3439:23;3435:32;3432:52;;;3480:1;3477;3470:12;3432:52;3519:9;3506:23;3538:31;3563:5;3538:31;:::i;:::-;3588:5;-1:-1:-1;3645:2:1;3630:18;;3617:32;3687:15;;3680:23;3668:36;;3658:64;;3718:1;3715;3708:12;4227:316;4304:6;4312;4320;4373:2;4361:9;4352:7;4348:23;4344:32;4341:52;;;4389:1;4386;4379:12;4341:52;-1:-1:-1;;4412:23:1;;;4482:2;4467:18;;4454:32;;-1:-1:-1;4533:2:1;4518:18;;;4505:32;;4227:316;-1:-1:-1;4227:316:1:o;5356:127::-;5417:10;5412:3;5408:20;5405:1;5398:31;5448:4;5445:1;5438:15;5472:4;5469:1;5462:15;5488:422;5577:1;5620:5;5577:1;5634:270;5655:7;5645:8;5642:21;5634:270;;;5714:4;5710:1;5706:6;5702:17;5696:4;5693:27;5690:53;;;5723:18;;:::i;:::-;5773:7;5763:8;5759:22;5756:55;;;5793:16;;;;5756:55;5872:22;;;;5832:15;;;;5634:270;;;5638:3;5488:422;;;;;:::o;5915:806::-;5964:5;5994:8;5984:80;;-1:-1:-1;6035:1:1;6049:5;;5984:80;6083:4;6073:76;;-1:-1:-1;6120:1:1;6134:5;;6073:76;6165:4;6183:1;6178:59;;;;6251:1;6246:130;;;;6158:218;;6178:59;6208:1;6199:10;;6222:5;;;6246:130;6283:3;6273:8;6270:17;6267:43;;;6290:18;;:::i;:::-;-1:-1:-1;;6346:1:1;6332:16;;6361:5;;6158:218;;6460:2;6450:8;6447:16;6441:3;6435:4;6432:13;6428:36;6422:2;6412:8;6409:16;6404:2;6398:4;6395:12;6391:35;6388:77;6385:159;;;-1:-1:-1;6497:19:1;;;6529:5;;6385:159;6576:34;6601:8;6595:4;6576:34;:::i;:::-;6646:6;6642:1;6638:6;6634:19;6625:7;6622:32;6619:58;;;6657:18;;:::i;:::-;6695:20;;5915:806;-1:-1:-1;;;5915:806:1:o;6726:140::-;6784:5;6813:47;6854:4;6844:8;6840:19;6834:4;6813:47;:::i;6871:168::-;6944:9;;;6975;;6992:15;;;6986:22;;6972:37;6962:71;;7013:18;;:::i;7044:356::-;7246:2;7228:21;;;7265:18;;;7258:30;7324:34;7319:2;7304:18;;7297:62;7391:2;7376:18;;7044:356::o;8125:355::-;8327:2;8309:21;;;8366:2;8346:18;;;8339:30;8405:33;8400:2;8385:18;;8378:61;8471:2;8456:18;;8125:355::o;8485:217::-;8525:1;8551;8541:132;;8595:10;8590:3;8586:20;8583:1;8576:31;8630:4;8627:1;8620:15;8658:4;8655:1;8648:15;8541:132;-1:-1:-1;8687:9:1;;8485:217::o;8917:127::-;8978:10;8973:3;8969:20;8966:1;8959:31;9009:4;9006:1;8999:15;9033:4;9030:1;9023:15;9049:125;9114:9;;;9135:10;;;9132:36;;;9148:18;;:::i;9179:128::-;9246:9;;;9267:11;;;9264:37;;;9281:18;;:::i;15044:251::-;15114:6;15167:2;15155:9;15146:7;15142:23;15138:32;15135:52;;;15183:1;15180;15173:12;15135:52;15215:9;15209:16;15234:31;15259:5;15234:31;:::i;15300:188::-;15379:13;;-1:-1:-1;;;;;15421:42:1;;15411:53;;15401:81;;15478:1;15475;15468:12;15401:81;15300:188;;;:::o;15493:450::-;15580:6;15588;15596;15649:2;15637:9;15628:7;15624:23;15620:32;15617:52;;;15665:1;15662;15655:12;15617:52;15688:40;15718:9;15688:40;:::i;:::-;15678:50;;15747:49;15792:2;15781:9;15777:18;15747:49;:::i;:::-;15737:59;;15839:2;15828:9;15824:18;15818:25;15883:10;15876:5;15872:22;15865:5;15862:33;15852:61;;15909:1;15906;15899:12;15852:61;15932:5;15922:15;;;15493:450;;;;;:::o;15948:273::-;16016:6;16069:2;16057:9;16048:7;16044:23;16040:32;16037:52;;;16085:1;16082;16075:12;16037:52;16117:9;16111:16;16167:4;16160:5;16156:16;16149:5;16146:27;16136:55;;16187:1;16184;16177:12

Swarm Source

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