ETH Price: $3,905.34 (+6.42%)

Token

ERC-20: MarbleX (MarbleX)
 

Overview

Max Total Supply

100,000,000,000 MarbleX

Holders

284

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
thadfollowill.eth
Balance
136,177,274.498199794990664564 MarbleX

Value
$0.00
0x83aa28be7881b31e00026af8ce2feb6bfd00a23e
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MarbleX

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
//
//
//  __       __   ______   _______   _______   __        ________  __    __ 
// |  \     /  \ /      \ |       \ |       \ |  \      |        \|  \  |  \
// | $$\   /  $$|  $$$$$$\| $$$$$$$\| $$$$$$$\| $$      | $$$$$$$$| $$  | $$
// | $$$\ /  $$$| $$__| $$| $$__| $$| $$__/ $$| $$      | $$__     \$$\/  $$
// | $$$$\  $$$$| $$    $$| $$    $$| $$    $$| $$      | $$  \     >$$  $$ 
// | $$\$$ $$ $$| $$$$$$$$| $$$$$$$\| $$$$$$$\| $$      | $$$$$    /  $$$$\ 
// | $$ \$$$| $$| $$  | $$| $$  | $$| $$__/ $$| $$_____ | $$_____ |  $$ \$$\
// | $$  \$ | $$| $$  | $$| $$  | $$| $$    $$| $$     \| $$     \| $$  | $$
//  \$$      \$$ \$$   \$$ \$$   \$$ \$$$$$$$  \$$$$$$$$ \$$$$$$$$ \$$   \$$
//                                                                                                                                                                                                           
// Socials : https://www.Marblex.live
// 

pragma solidity 0.8.11;

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

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

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

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

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

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

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

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

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

contract MarbleX is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public marketingAddress;
    address public RaceAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last    Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyRaceFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellRaceFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForRace;

    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event EnabledTrading();
    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedMarketingAddress(address indexed newWallet);

    event UpdatedRaceAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("MarbleX", "MarbleX") {

        address newOwner = msg.sender; // can leave alone if owner is deployer.

        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 100_000_000_000 * 1e18;

        maxBuyAmount = totalSupply * 2 / 1000;
        maxSellAmount = totalSupply * 5 / 1000;
        maxWalletAmount = totalSupply * 10 / 1000;
        swapTokensAtAmount = totalSupply * 25 / 100000; // 0.025% swap amount

        buyMarketingFee = 10;
        buyLiquidityFee = 5;
        buyRaceFee = 10;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyRaceFee;

        sellMarketingFee = 10;
        sellLiquidityFee = 5;
        sellRaceFee = 10;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellRaceFee;

        marketingAddress = address(0x6bFC097B384f254474793E164289531B0CB57728);
        RaceAddress = address(0xdC6741CAfC3bd0Bb7eaC0C4E0d281F63f6c00f7F);

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);


        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        emit EnabledTrading();
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        emit RemovedLimits();
    }


    // disable Transfer delay - cannot be re enabled
    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }

    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max buy amount lower than 0.1%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max sell amount lower than 0.1%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%");
        maxWalletAmount = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply.");
        swapTokensAtAmount = newAmount;
    }

    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }


    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != uniswapV2Pair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _RaceFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyRaceFee = _RaceFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyRaceFee;
        require(buyTotalFees <= 15, "Must keep fees at 15% or less");
    }

    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _RaceFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellRaceFee = _RaceFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellRaceFee;
        require(sellTotalFees <= 30, "Must keep fees at 20% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");


        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){
                if(!tradingActive){
                    require(_isExcludedMaxTransactionAmount[from] || _isExcludedMaxTransactionAmount[to], "Trading is not active.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled){
                    if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number - 4 && _holderLastTransferTimestamp[to] < block.number - 4, "_transfer:: Transfer Delay enabled.  Try again later.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        uint256 penaltyAmount = 0;
        // only take fees on Trades, not on wallet transfers

        if(takeFee){

            if(tradingActiveBlock>0 && (tradingActiveBlock + 3) > block.number){
                penaltyAmount = amount * 99 / 100;
                super._transfer(from, marketingAddress, penaltyAmount);
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
                tokensForRace += fees * sellRaceFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
                tokensForRace += fees * buyRaceFee / buyTotalFees;
            }

            if(fees > 0){
                super._transfer(from, address(this), fees);
            }

            amount -= fees + penaltyAmount;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForRace;

        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 10){
            contractBalance = swapTokensAtAmount * 10;
        }

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForMarketing = ethBalance * tokensForMarketing / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForRace = ethBalance * tokensForRace / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForMarketing + ethForRace;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForRace = 0;

        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        (success,) = address(RaceAddress).call{value: ethForRace}("");

        (success,) = address(marketingAddress).call{value: address(this).balance}("");
    }

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this), "Can't withdraw native tokens");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function setMarketingAddress(address _marketingAddress) external onlyOwner {
        require(_marketingAddress != address(0), "_marketingAddress address cannot be 0");
        marketingAddress = payable(_marketingAddress);
        emit UpdatedMarketingAddress(_marketingAddress);
    }

    function setRaceAddress(address _RaceAddress) external onlyOwner {
        require(_RaceAddress != address(0), "_RaceAddress address cannot be 0");
        RaceAddress = payable(_RaceAddress);
        emit UpdatedRaceAddress(_RaceAddress);
    }
}

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":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedMarketingAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedRaceAddress","type":"event"},{"inputs":[],"name":"RaceAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRaceFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellRaceFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_RaceAddress","type":"address"}],"name":"setRaceAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForRace","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_RaceFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_RaceFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600d55600e805462ffffff191660019081179091556010805460ff191690911790553480156200003557600080fd5b5060408051808201825260078082526609ac2e4c4d8cab60cb1b60208084018281528551808701909652928552840152815191929162000078916003916200077b565b5080516200008e9060049060208401906200077b565b5050506000620000a36200041860201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062004c4c833981519152908290a35033737a250d5630b4cf539739df2c5dacb4c659f2488d620001038160016200041c565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200014e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000174919062000821565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e8919062000821565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000236573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025c919062000821565b6001600160a01b031660a0819052620002779060016200047f565b6c01431e0fae6d7217caa00000006103e86200029582600262000869565b620002a191906200088b565b6006556103e8620002b482600562000869565b620002c091906200088b565b6007556103e8620002d382600a62000869565b620002df91906200088b565b600855620186a0620002f382601962000869565b620002ff91906200088b565b600a9081556012819055600560138190556014829055620003219082620008ae565b6200032d9190620008ae565b601155600a60168190556005601781905560188290556200034f9082620008ae565b6200035b9190620008ae565b601555600b80546001600160a01b0319908116736bfc097b384f254474793e164289531b0cb5772817909155600c805490911673dc6741cafc3bd0bb7eac0c4e0d281f63f6c00f7f179055620003b38360016200041c565b620003c03060016200041c565b620003cf61dead60016200041c565b620003dc836001620004eb565b620003e9306001620004eb565b620003f861dead6001620004eb565b62000404838262000599565b6200040f836200067e565b50505062000906565b3390565b6001600160a01b0382166000818152601d6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152601e60205260409020805460ff1916821515179055620004af82826200041c565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b031633146200053a5760405162461bcd60e51b8152602060048201819052602482015260008051602062004c2c83398151915260448201526064015b60405180910390fd5b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005f15760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000531565b8060026000828254620006059190620008ae565b90915550506001600160a01b0382166000908152602081905260408120805483929062000634908490620008ae565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620006c95760405162461bcd60e51b8152602060048201819052602482015260008051602062004c2c833981519152604482015260640162000531565b6001600160a01b038116620007305760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000531565b6005546040516001600160a01b0380841692169060008051602062004c4c83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b8280546200078990620008c9565b90600052602060002090601f016020900481019282620007ad5760008555620007f8565b82601f10620007c857805160ff1916838001178555620007f8565b82800160010185558215620007f8579182015b82811115620007f8578251825591602001919060010190620007db565b50620008069291506200080a565b5090565b5b808211156200080657600081556001016200080b565b6000602082840312156200083457600080fd5b81516001600160a01b03811681146200084c57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161562000886576200088662000853565b500290565b600082620008a957634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620008c457620008c462000853565b500190565b600181811c90821680620008de57607f821691505b602082108114156200090057634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a0516142c16200096b60003960008181610587015281816111bf01528181611a840152612bc801526000818161043a01528181612b7101528181613b4801528181613c2801528181613c8a01528181613d040152613d2b01526142c16000f3fe60806040526004361061036f5760003560e01c80638a8c523c116101c6578063c18bc195116100f7578063e2f4560511610095578063f11a24d31161006f578063f11a24d314610a2b578063f2fde38b14610a41578063f5648a4f14610a61578063f637434214610a7657600080fd5b8063e2f45605146109ea578063e884f26014610a00578063ee40166e14610a1557600080fd5b8063d257b34f116100d1578063d257b34f14610941578063d85ba06314610961578063dc3f0d0f14610977578063dd62ed3e1461099757600080fd5b8063c18bc195146108f1578063c876d0b914610911578063cc82855d1461092b57600080fd5b8063a5ece94111610164578063b62496f51161013e578063b62496f514610862578063bbc0c74214610892578063c0246668146108b1578063c17b5b8c146108d157600080fd5b8063a5ece941146107ff578063a9059cbb1461082c578063aa4bde281461084c57600080fd5b806392136913116101a0578063921369131461079457806395d89b41146107aa5780639a7a23d6146107bf578063a457c2d7146107df57600080fd5b80638a8c523c146107345780638da5cb5b14610749578063906e9dd01461077457600080fd5b80634a62bb65116102a0578063751039fc1161023e5780638095d564116102185780638095d564146106c85780638366e79a146106e857806388dc86881461070857806388e765ff1461071e57600080fd5b8063751039fc1461067d5780637571336a146106925780637bce5a04146106b257600080fd5b80636a486a8e1161027a5780636a486a8e146105ef5780636ddd17131461060557806370a0823114610625578063715018a61461066857600080fd5b80634a62bb65146105a957806366d602ae146105c3578063689ae116146105d957600080fd5b80631f3fed8f1161030d5780632c904e93116102e75780632c904e931461050c578063313ce56714610539578063395093511461055557806349bd5a5e1461057557600080fd5b80631f3fed8f146104b657806323b872dd146104cc5780632be32b61146104ec57600080fd5b806310d5de531161034957806310d5de53146103f85780631694505e1461042857806318160ddd146104815780631a8145bb146104a057600080fd5b806306fdde031461037b578063095ea7b3146103a65780630b23b770146103d657600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610a8c565b60405161039d9190613e43565b60405180910390f35b3480156103b257600080fd5b506103c66103c1366004613edb565b610b1e565b604051901515815260200161039d565b3480156103e257600080fd5b506103f66103f1366004613f07565b610b34565b005b34801561040457600080fd5b506103c6610413366004613f07565b601d6020526000908152604090205460ff1681565b34801561043457600080fd5b5061045c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161039d565b34801561048d57600080fd5b506002545b60405190815260200161039d565b3480156104ac57600080fd5b50610492601a5481565b3480156104c257600080fd5b5061049260195481565b3480156104d857600080fd5b506103c66104e7366004613f2b565b610ca6565b3480156104f857600080fd5b506103f6610507366004613f6c565b610d8c565b34801561051857600080fd5b50600c5461045c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561054557600080fd5b506040516012815260200161039d565b34801561056157600080fd5b506103c6610570366004613edb565b610f1e565b34801561058157600080fd5b5061045c7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105b557600080fd5b50600e546103c69060ff1681565b3480156105cf57600080fd5b5061049260075481565b3480156105e557600080fd5b5061049260145481565b3480156105fb57600080fd5b5061049260155481565b34801561061157600080fd5b50600e546103c69062010000900460ff1681565b34801561063157600080fd5b50610492610640366004613f07565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b34801561067457600080fd5b506103f6610f67565b34801561068957600080fd5b506103f6611057565b34801561069e57600080fd5b506103f66106ad366004613f93565b611137565b3480156106be57600080fd5b5061049260125481565b3480156106d457600080fd5b506103f66106e3366004613fcc565b6112ef565b3480156106f457600080fd5b506103c6610703366004613ff8565b611408565b34801561071457600080fd5b5061049260185481565b34801561072a57600080fd5b5061049260065481565b34801561074057600080fd5b506103f6611710565b34801561075557600080fd5b5060055473ffffffffffffffffffffffffffffffffffffffff1661045c565b34801561078057600080fd5b506103f661078f366004613f07565b61185f565b3480156107a057600080fd5b5061049260165481565b3480156107b657600080fd5b506103906119f2565b3480156107cb57600080fd5b506103f66107da366004613f93565b611a01565b3480156107eb57600080fd5b506103c66107fa366004613edb565b611b6c565b34801561080b57600080fd5b50600b5461045c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561083857600080fd5b506103c6610847366004613edb565b611c44565b34801561085857600080fd5b5061049260085481565b34801561086e57600080fd5b506103c661087d366004613f07565b601e6020526000908152604090205460ff1681565b34801561089e57600080fd5b50600e546103c690610100900460ff1681565b3480156108bd57600080fd5b506103f66108cc366004613f93565b611c51565b3480156108dd57600080fd5b506103f66108ec366004613fcc565b611d5c565b3480156108fd57600080fd5b506103f661090c366004613f6c565b611e70565b34801561091d57600080fd5b506010546103c69060ff1681565b34801561093757600080fd5b50610492601b5481565b34801561094d57600080fd5b506103f661095c366004613f6c565b611ffb565b34801561096d57600080fd5b5061049260115481565b34801561098357600080fd5b506103f6610992366004613f6c565b6121e2565b3480156109a357600080fd5b506104926109b2366004613ff8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3480156109f657600080fd5b50610492600a5481565b348015610a0c57600080fd5b506103f661236d565b348015610a2157600080fd5b50610492600d5481565b348015610a3757600080fd5b5061049260135481565b348015610a4d57600080fd5b506103f6610a5c366004613f07565b612418565b348015610a6d57600080fd5b506103f66125ca565b348015610a8257600080fd5b5061049260175481565b606060038054610a9b90614026565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac790614026565b8015610b145780601f10610ae957610100808354040283529160200191610b14565b820191906000526020600020905b815481529060010190602001808311610af757829003601f168201915b5050505050905090565b6000610b2b338484612698565b50600192915050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610c37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5f526163654164647265737320616464726573732063616e6e6f7420626520306044820152606401610bb1565b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fc64cfc419ae64123fdce3df1b9936c4f73fe4c1b0e8bb2cc5a9ba7ebef0714d190600090a250565b6000610cb384848461284b565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482811015610d74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610bb1565b610d818533858403612698565b506001949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610e0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b670de0b6b3a76400006103e8610e2260025490565b610e2d9060016140a9565b610e3791906140e6565b610e4191906140e6565b811015610ed0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060448201527f7468616e20302e312500000000000000000000000000000000000000000000006064820152608401610bb1565b610ee281670de0b6b3a76400006140a9565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091610b2b918590610f62908690614121565b612698565b60055473ffffffffffffffffffffffffffffffffffffffff163314610fe8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b60055460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60055473ffffffffffffffffffffffffffffffffffffffff1633146110d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b600e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009081169091556010805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146111b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b80611299577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201527f6d61782074786e000000000000000000000000000000000000000000000000006064820152608401610bb1565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152601d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314611370576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b6012839055601382905560148190558061138a8385614121565b6113949190614121565b6011819055600f1015611403576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c6573730000006044820152606401610bb1565b505050565b60055460009073ffffffffffffffffffffffffffffffffffffffff16331461148c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b73ffffffffffffffffffffffffffffffffffffffff8316611509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610bb1565b73ffffffffffffffffffffffffffffffffffffffff8316301415611589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610bb1565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa1580156115f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161a9190614139565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611693573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b79190614152565b6040805173ffffffffffffffffffffffffffffffffffffffff87168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b600e54610100900460ff1615611803576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610bb1565b600e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff166201010017905543600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146118e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b73ffffffffffffffffffffffffffffffffffffffff8116611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f7460448201527f20626520300000000000000000000000000000000000000000000000000000006064820152608401610bb1565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fd1e7d6a3390dd5008bd1c57798817b9f806e4c417264e7d3d67e42e784dc24a990600090a250565b606060048054610a9b90614026565b60055473ffffffffffffffffffffffffffffffffffffffff163314611a82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610bb1565b611b6882826134ce565b5050565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015611c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610bb1565b611c3a3385858403612698565b5060019392505050565b6000610b2b33848461284b565b60055473ffffffffffffffffffffffffffffffffffffffff163314611cd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b73ffffffffffffffffffffffffffffffffffffffff82166000818152601c602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611ddd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b60168390556017829055601881905580611df78385614121565b611e019190614121565b6015819055601e1015611403576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610bb1565b60055473ffffffffffffffffffffffffffffffffffffffff163314611ef1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b670de0b6b3a76400006103e8611f0660025490565b611f119060036140a9565b611f1b91906140e6565b611f2591906140e6565b811015611fb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201527f6572207468616e20302e332500000000000000000000000000000000000000006064820152608401610bb1565b611fc681670de0b6b3a76400006140a9565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610f13565b60055473ffffffffffffffffffffffffffffffffffffffff16331461207c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b620186a061208960025490565b6120949060016140a9565b61209e91906140e6565b81101561212d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e3030312520746f74616c20737570706c792e00000000000000000000006064820152608401610bb1565b6103e861213960025490565b6121449060016140a9565b61214e91906140e6565b8111156121dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527f6e20302e312520746f74616c20737570706c792e0000000000000000000000006064820152608401610bb1565b600a55565b60055473ffffffffffffffffffffffffffffffffffffffff163314612263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b670de0b6b3a76400006103e861227860025490565b6122839060016140a9565b61228d91906140e6565b61229791906140e6565b811015612326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260448201527f207468616e20302e3125000000000000000000000000000000000000000000006064820152608401610bb1565b61233881670de0b6b3a76400006140a9565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610f13565b60055473ffffffffffffffffffffffffffffffffffffffff1633146123ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60055473ffffffffffffffffffffffffffffffffffffffff163314612499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b73ffffffffffffffffffffffffffffffffffffffff811661253c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610bb1565b60055460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff16331461264b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b604051600090339047908381818185875af1925050503d806000811461268d576040519150601f19603f3d011682016040523d82523d6000602084013e612692565b606091505b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661273a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610bb1565b73ffffffffffffffffffffffffffffffffffffffff82166127dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610bb1565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166128ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bb1565b73ffffffffffffffffffffffffffffffffffffffff8216612991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bb1565b600081116129fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610bb1565b600e5460ff16156130b05760055473ffffffffffffffffffffffffffffffffffffffff848116911614801590612a4c575060055473ffffffffffffffffffffffffffffffffffffffff838116911614155b8015612a6d575073ffffffffffffffffffffffffffffffffffffffff821615155b8015612a91575073ffffffffffffffffffffffffffffffffffffffff821661dead14155b156130b057600e54610100900460ff16612b645773ffffffffffffffffffffffffffffffffffffffff83166000908152601d602052604090205460ff1680612afe575073ffffffffffffffffffffffffffffffffffffffff82166000908152601d602052604090205460ff165b612b64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f54726164696e67206973206e6f74206163746976652e000000000000000000006044820152606401610bb1565b60105460ff1615612d30577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c1757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d3057612c2760044361416f565b326000908152600f6020526040902054108015612c725750612c4a60044361416f565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600f6020526040902054105b612cfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e202054727920616761696e206c617465722e00000000000000000000006064820152608401610bb1565b326000908152600f6020526040808220439081905573ffffffffffffffffffffffffffffffffffffffff851683529120555b73ffffffffffffffffffffffffffffffffffffffff83166000908152601e602052604090205460ff168015612d8b575073ffffffffffffffffffffffffffffffffffffffff82166000908152601d602052604090205460ff16155b15612ec257600654811115612e22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d6178206275792e0000000000000000000000000000000000000000000000006064820152608401610bb1565b60085473ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054612e559083614121565b1115612ebd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f43616e6e6f7420457863656564206d61782077616c6c657400000000000000006044820152606401610bb1565b6130b0565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601e602052604090205460ff168015612f1d575073ffffffffffffffffffffffffffffffffffffffff83166000908152601d602052604090205460ff16155b15612fb457600754811115612ebd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d61782073656c6c2e000000000000000000000000000000000000000000006064820152608401610bb1565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601d602052604090205460ff16158015613010575073ffffffffffffffffffffffffffffffffffffffff83166000908152601d602052604090205460ff16155b156130b05760085473ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020546130489083614121565b11156130b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f43616e6e6f7420457863656564206d61782077616c6c657400000000000000006044820152606401610bb1565b30600090815260208190526040902054600a54811080159081906130dc5750600e5462010000900460ff165b80156130eb575060095460ff16155b801561311d575073ffffffffffffffffffffffffffffffffffffffff85166000908152601e602052604090205460ff16155b801561314f575073ffffffffffffffffffffffffffffffffffffffff85166000908152601c602052604090205460ff16155b8015613181575073ffffffffffffffffffffffffffffffffffffffff84166000908152601c602052604090205460ff16155b156131e257600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556131b9613570565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b73ffffffffffffffffffffffffffffffffffffffff85166000908152601c602052604090205460019060ff168061323e575073ffffffffffffffffffffffffffffffffffffffff85166000908152601c602052604090205460ff165b15613247575060005b60008082156134b9576000600d5411801561326f575043600d54600361326d9190614121565b115b156132b85760646132818760636140a9565b61328b91906140e6565b600b549091506132b390899073ffffffffffffffffffffffffffffffffffffffff1683613795565b613491565b73ffffffffffffffffffffffffffffffffffffffff87166000908152601e602052604090205460ff1680156132ef57506000601554115b156133a75760646015548761330491906140a9565b61330e91906140e6565b91506015546017548361332191906140a9565b61332b91906140e6565b601a600082825461333c9190614121565b909155505060155460165461335190846140a9565b61335b91906140e6565b6019600082825461336c9190614121565b909155505060155460185461338190846140a9565b61338b91906140e6565b601b600082825461339c9190614121565b909155506134919050565b73ffffffffffffffffffffffffffffffffffffffff88166000908152601e602052604090205460ff1680156133de57506000601154115b15613491576064601154876133f391906140a9565b6133fd91906140e6565b91506011546013548361341091906140a9565b61341a91906140e6565b601a600082825461342b9190614121565b909155505060115460125461344090846140a9565b61344a91906140e6565b6019600082825461345b9190614121565b909155505060115460145461347090846140a9565b61347a91906140e6565b601b600082825461348b9190614121565b90915550505b81156134a2576134a2883084613795565b6134ac8183614121565b6134b6908761416f565b95505b6134c4888888613795565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601e6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215151790556135278282613a49565b6040518115159073ffffffffffffffffffffffffffffffffffffffff8416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3060009081526020819052604081205490506000601b54601954601a546135979190614121565b6135a19190614121565b90508115806135ae575080155b156135b7575050565b600a80546135c4916140a9565b8211156135db57600a80546135d8916140a9565b91505b600080600283601a54866135ef91906140a9565b6135f991906140e6565b61360391906140e6565b9050613617613612828661416f565b613ad7565b601a544790819060009061362d906002906140e6565b613637908761416f565b60195461364490856140a9565b61364e91906140e6565b905060006002601a5461366191906140e6565b61366b908861416f565b601b5461367890866140a9565b61368291906140e6565b905061368e8183614121565b613698908461416f565b6000601a8190556019819055601b55925084158015906136b85750600083115b156136c7576136c78584613cfe565b600c5460405173ffffffffffffffffffffffffffffffffffffffff909116908290600081818185875af1925050503d8060008114613721576040519150601f19603f3d011682016040523d82523d6000602084013e613726565b606091505b5050600b5460405191975073ffffffffffffffffffffffffffffffffffffffff16904790600081818185875af1925050503d8060008114613783576040519150601f19603f3d011682016040523d82523d6000602084013e613788565b606091505b5050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316613838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bb1565b73ffffffffffffffffffffffffffffffffffffffff82166138db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bb1565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015613991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610bb1565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906139d5908490614121565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a3b91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166000818152601d602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613b0c57613b0c614186565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bd591906141b5565b81600181518110613be857613be8614186565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613c4d307f000000000000000000000000000000000000000000000000000000000000000084612698565b6040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790613cc89085906000908690309042906004016141d2565b600060405180830381600087803b158015613ce257600080fd5b505af1158015613cf6573d6000803e3d6000fd5b505050505050565b613d29307f000000000000000000000000000000000000000000000000000000000000000084612698565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613d8a60055473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015613e17573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e3c919061425d565b5050505050565b600060208083528351808285015260005b81811015613e7057858101830151858201604001528201613e54565b81811115613e82576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114613ed857600080fd5b50565b60008060408385031215613eee57600080fd5b8235613ef981613eb6565b946020939093013593505050565b600060208284031215613f1957600080fd5b8135613f2481613eb6565b9392505050565b600080600060608486031215613f4057600080fd5b8335613f4b81613eb6565b92506020840135613f5b81613eb6565b929592945050506040919091013590565b600060208284031215613f7e57600080fd5b5035919050565b8015158114613ed857600080fd5b60008060408385031215613fa657600080fd5b8235613fb181613eb6565b91506020830135613fc181613f85565b809150509250929050565b600080600060608486031215613fe157600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561400b57600080fd5b823561401681613eb6565b91506020830135613fc181613eb6565b600181811c9082168061403a57607f821691505b60208210811415614074577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140e1576140e161407a565b500290565b60008261411c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156141345761413461407a565b500190565b60006020828403121561414b57600080fd5b5051919050565b60006020828403121561416457600080fd5b8151613f2481613f85565b6000828210156141815761418161407a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156141c757600080fd5b8151613f2481613eb6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561422f57845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016141fd565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b60008060006060848603121561427257600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a8b16046a2ae88d890cbd9c695a76f20eb344bdadb4fb2b7a8527a2e1a2eaafd64736f6c634300080b00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x60806040526004361061036f5760003560e01c80638a8c523c116101c6578063c18bc195116100f7578063e2f4560511610095578063f11a24d31161006f578063f11a24d314610a2b578063f2fde38b14610a41578063f5648a4f14610a61578063f637434214610a7657600080fd5b8063e2f45605146109ea578063e884f26014610a00578063ee40166e14610a1557600080fd5b8063d257b34f116100d1578063d257b34f14610941578063d85ba06314610961578063dc3f0d0f14610977578063dd62ed3e1461099757600080fd5b8063c18bc195146108f1578063c876d0b914610911578063cc82855d1461092b57600080fd5b8063a5ece94111610164578063b62496f51161013e578063b62496f514610862578063bbc0c74214610892578063c0246668146108b1578063c17b5b8c146108d157600080fd5b8063a5ece941146107ff578063a9059cbb1461082c578063aa4bde281461084c57600080fd5b806392136913116101a0578063921369131461079457806395d89b41146107aa5780639a7a23d6146107bf578063a457c2d7146107df57600080fd5b80638a8c523c146107345780638da5cb5b14610749578063906e9dd01461077457600080fd5b80634a62bb65116102a0578063751039fc1161023e5780638095d564116102185780638095d564146106c85780638366e79a146106e857806388dc86881461070857806388e765ff1461071e57600080fd5b8063751039fc1461067d5780637571336a146106925780637bce5a04146106b257600080fd5b80636a486a8e1161027a5780636a486a8e146105ef5780636ddd17131461060557806370a0823114610625578063715018a61461066857600080fd5b80634a62bb65146105a957806366d602ae146105c3578063689ae116146105d957600080fd5b80631f3fed8f1161030d5780632c904e93116102e75780632c904e931461050c578063313ce56714610539578063395093511461055557806349bd5a5e1461057557600080fd5b80631f3fed8f146104b657806323b872dd146104cc5780632be32b61146104ec57600080fd5b806310d5de531161034957806310d5de53146103f85780631694505e1461042857806318160ddd146104815780631a8145bb146104a057600080fd5b806306fdde031461037b578063095ea7b3146103a65780630b23b770146103d657600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610a8c565b60405161039d9190613e43565b60405180910390f35b3480156103b257600080fd5b506103c66103c1366004613edb565b610b1e565b604051901515815260200161039d565b3480156103e257600080fd5b506103f66103f1366004613f07565b610b34565b005b34801561040457600080fd5b506103c6610413366004613f07565b601d6020526000908152604090205460ff1681565b34801561043457600080fd5b5061045c7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161039d565b34801561048d57600080fd5b506002545b60405190815260200161039d565b3480156104ac57600080fd5b50610492601a5481565b3480156104c257600080fd5b5061049260195481565b3480156104d857600080fd5b506103c66104e7366004613f2b565b610ca6565b3480156104f857600080fd5b506103f6610507366004613f6c565b610d8c565b34801561051857600080fd5b50600c5461045c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561054557600080fd5b506040516012815260200161039d565b34801561056157600080fd5b506103c6610570366004613edb565b610f1e565b34801561058157600080fd5b5061045c7f000000000000000000000000d45a84fda81645ead76eec1cacf2605aadd2bcb981565b3480156105b557600080fd5b50600e546103c69060ff1681565b3480156105cf57600080fd5b5061049260075481565b3480156105e557600080fd5b5061049260145481565b3480156105fb57600080fd5b5061049260155481565b34801561061157600080fd5b50600e546103c69062010000900460ff1681565b34801561063157600080fd5b50610492610640366004613f07565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b34801561067457600080fd5b506103f6610f67565b34801561068957600080fd5b506103f6611057565b34801561069e57600080fd5b506103f66106ad366004613f93565b611137565b3480156106be57600080fd5b5061049260125481565b3480156106d457600080fd5b506103f66106e3366004613fcc565b6112ef565b3480156106f457600080fd5b506103c6610703366004613ff8565b611408565b34801561071457600080fd5b5061049260185481565b34801561072a57600080fd5b5061049260065481565b34801561074057600080fd5b506103f6611710565b34801561075557600080fd5b5060055473ffffffffffffffffffffffffffffffffffffffff1661045c565b34801561078057600080fd5b506103f661078f366004613f07565b61185f565b3480156107a057600080fd5b5061049260165481565b3480156107b657600080fd5b506103906119f2565b3480156107cb57600080fd5b506103f66107da366004613f93565b611a01565b3480156107eb57600080fd5b506103c66107fa366004613edb565b611b6c565b34801561080b57600080fd5b50600b5461045c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561083857600080fd5b506103c6610847366004613edb565b611c44565b34801561085857600080fd5b5061049260085481565b34801561086e57600080fd5b506103c661087d366004613f07565b601e6020526000908152604090205460ff1681565b34801561089e57600080fd5b50600e546103c690610100900460ff1681565b3480156108bd57600080fd5b506103f66108cc366004613f93565b611c51565b3480156108dd57600080fd5b506103f66108ec366004613fcc565b611d5c565b3480156108fd57600080fd5b506103f661090c366004613f6c565b611e70565b34801561091d57600080fd5b506010546103c69060ff1681565b34801561093757600080fd5b50610492601b5481565b34801561094d57600080fd5b506103f661095c366004613f6c565b611ffb565b34801561096d57600080fd5b5061049260115481565b34801561098357600080fd5b506103f6610992366004613f6c565b6121e2565b3480156109a357600080fd5b506104926109b2366004613ff8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3480156109f657600080fd5b50610492600a5481565b348015610a0c57600080fd5b506103f661236d565b348015610a2157600080fd5b50610492600d5481565b348015610a3757600080fd5b5061049260135481565b348015610a4d57600080fd5b506103f6610a5c366004613f07565b612418565b348015610a6d57600080fd5b506103f66125ca565b348015610a8257600080fd5b5061049260175481565b606060038054610a9b90614026565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac790614026565b8015610b145780601f10610ae957610100808354040283529160200191610b14565b820191906000526020600020905b815481529060010190602001808311610af757829003601f168201915b5050505050905090565b6000610b2b338484612698565b50600192915050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610c37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5f526163654164647265737320616464726573732063616e6e6f7420626520306044820152606401610bb1565b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fc64cfc419ae64123fdce3df1b9936c4f73fe4c1b0e8bb2cc5a9ba7ebef0714d190600090a250565b6000610cb384848461284b565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482811015610d74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610bb1565b610d818533858403612698565b506001949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610e0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b670de0b6b3a76400006103e8610e2260025490565b610e2d9060016140a9565b610e3791906140e6565b610e4191906140e6565b811015610ed0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060448201527f7468616e20302e312500000000000000000000000000000000000000000000006064820152608401610bb1565b610ee281670de0b6b3a76400006140a9565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091610b2b918590610f62908690614121565b612698565b60055473ffffffffffffffffffffffffffffffffffffffff163314610fe8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b60055460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60055473ffffffffffffffffffffffffffffffffffffffff1633146110d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b600e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009081169091556010805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146111b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b80611299577f000000000000000000000000d45a84fda81645ead76eec1cacf2605aadd2bcb973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201527f6d61782074786e000000000000000000000000000000000000000000000000006064820152608401610bb1565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152601d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314611370576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b6012839055601382905560148190558061138a8385614121565b6113949190614121565b6011819055600f1015611403576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c6573730000006044820152606401610bb1565b505050565b60055460009073ffffffffffffffffffffffffffffffffffffffff16331461148c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b73ffffffffffffffffffffffffffffffffffffffff8316611509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610bb1565b73ffffffffffffffffffffffffffffffffffffffff8316301415611589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610bb1565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa1580156115f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161a9190614139565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611693573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b79190614152565b6040805173ffffffffffffffffffffffffffffffffffffffff87168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b600e54610100900460ff1615611803576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610bb1565b600e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff166201010017905543600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146118e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b73ffffffffffffffffffffffffffffffffffffffff8116611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f7460448201527f20626520300000000000000000000000000000000000000000000000000000006064820152608401610bb1565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fd1e7d6a3390dd5008bd1c57798817b9f806e4c417264e7d3d67e42e784dc24a990600090a250565b606060048054610a9b90614026565b60055473ffffffffffffffffffffffffffffffffffffffff163314611a82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b7f000000000000000000000000d45a84fda81645ead76eec1cacf2605aadd2bcb973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610bb1565b611b6882826134ce565b5050565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015611c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610bb1565b611c3a3385858403612698565b5060019392505050565b6000610b2b33848461284b565b60055473ffffffffffffffffffffffffffffffffffffffff163314611cd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b73ffffffffffffffffffffffffffffffffffffffff82166000818152601c602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611ddd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b60168390556017829055601881905580611df78385614121565b611e019190614121565b6015819055601e1015611403576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610bb1565b60055473ffffffffffffffffffffffffffffffffffffffff163314611ef1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b670de0b6b3a76400006103e8611f0660025490565b611f119060036140a9565b611f1b91906140e6565b611f2591906140e6565b811015611fb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201527f6572207468616e20302e332500000000000000000000000000000000000000006064820152608401610bb1565b611fc681670de0b6b3a76400006140a9565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610f13565b60055473ffffffffffffffffffffffffffffffffffffffff16331461207c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b620186a061208960025490565b6120949060016140a9565b61209e91906140e6565b81101561212d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e3030312520746f74616c20737570706c792e00000000000000000000006064820152608401610bb1565b6103e861213960025490565b6121449060016140a9565b61214e91906140e6565b8111156121dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527f6e20302e312520746f74616c20737570706c792e0000000000000000000000006064820152608401610bb1565b600a55565b60055473ffffffffffffffffffffffffffffffffffffffff163314612263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b670de0b6b3a76400006103e861227860025490565b6122839060016140a9565b61228d91906140e6565b61229791906140e6565b811015612326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260448201527f207468616e20302e3125000000000000000000000000000000000000000000006064820152608401610bb1565b61233881670de0b6b3a76400006140a9565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610f13565b60055473ffffffffffffffffffffffffffffffffffffffff1633146123ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60055473ffffffffffffffffffffffffffffffffffffffff163314612499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b73ffffffffffffffffffffffffffffffffffffffff811661253c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610bb1565b60055460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff16331461264b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb1565b604051600090339047908381818185875af1925050503d806000811461268d576040519150601f19603f3d011682016040523d82523d6000602084013e612692565b606091505b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661273a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610bb1565b73ffffffffffffffffffffffffffffffffffffffff82166127dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610bb1565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166128ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bb1565b73ffffffffffffffffffffffffffffffffffffffff8216612991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bb1565b600081116129fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610bb1565b600e5460ff16156130b05760055473ffffffffffffffffffffffffffffffffffffffff848116911614801590612a4c575060055473ffffffffffffffffffffffffffffffffffffffff838116911614155b8015612a6d575073ffffffffffffffffffffffffffffffffffffffff821615155b8015612a91575073ffffffffffffffffffffffffffffffffffffffff821661dead14155b156130b057600e54610100900460ff16612b645773ffffffffffffffffffffffffffffffffffffffff83166000908152601d602052604090205460ff1680612afe575073ffffffffffffffffffffffffffffffffffffffff82166000908152601d602052604090205460ff165b612b64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f54726164696e67206973206e6f74206163746976652e000000000000000000006044820152606401610bb1565b60105460ff1615612d30577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c1757507f000000000000000000000000d45a84fda81645ead76eec1cacf2605aadd2bcb973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d3057612c2760044361416f565b326000908152600f6020526040902054108015612c725750612c4a60044361416f565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600f6020526040902054105b612cfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e202054727920616761696e206c617465722e00000000000000000000006064820152608401610bb1565b326000908152600f6020526040808220439081905573ffffffffffffffffffffffffffffffffffffffff851683529120555b73ffffffffffffffffffffffffffffffffffffffff83166000908152601e602052604090205460ff168015612d8b575073ffffffffffffffffffffffffffffffffffffffff82166000908152601d602052604090205460ff16155b15612ec257600654811115612e22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d6178206275792e0000000000000000000000000000000000000000000000006064820152608401610bb1565b60085473ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054612e559083614121565b1115612ebd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f43616e6e6f7420457863656564206d61782077616c6c657400000000000000006044820152606401610bb1565b6130b0565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601e602052604090205460ff168015612f1d575073ffffffffffffffffffffffffffffffffffffffff83166000908152601d602052604090205460ff16155b15612fb457600754811115612ebd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d61782073656c6c2e000000000000000000000000000000000000000000006064820152608401610bb1565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601d602052604090205460ff16158015613010575073ffffffffffffffffffffffffffffffffffffffff83166000908152601d602052604090205460ff16155b156130b05760085473ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020546130489083614121565b11156130b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f43616e6e6f7420457863656564206d61782077616c6c657400000000000000006044820152606401610bb1565b30600090815260208190526040902054600a54811080159081906130dc5750600e5462010000900460ff165b80156130eb575060095460ff16155b801561311d575073ffffffffffffffffffffffffffffffffffffffff85166000908152601e602052604090205460ff16155b801561314f575073ffffffffffffffffffffffffffffffffffffffff85166000908152601c602052604090205460ff16155b8015613181575073ffffffffffffffffffffffffffffffffffffffff84166000908152601c602052604090205460ff16155b156131e257600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556131b9613570565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b73ffffffffffffffffffffffffffffffffffffffff85166000908152601c602052604090205460019060ff168061323e575073ffffffffffffffffffffffffffffffffffffffff85166000908152601c602052604090205460ff165b15613247575060005b60008082156134b9576000600d5411801561326f575043600d54600361326d9190614121565b115b156132b85760646132818760636140a9565b61328b91906140e6565b600b549091506132b390899073ffffffffffffffffffffffffffffffffffffffff1683613795565b613491565b73ffffffffffffffffffffffffffffffffffffffff87166000908152601e602052604090205460ff1680156132ef57506000601554115b156133a75760646015548761330491906140a9565b61330e91906140e6565b91506015546017548361332191906140a9565b61332b91906140e6565b601a600082825461333c9190614121565b909155505060155460165461335190846140a9565b61335b91906140e6565b6019600082825461336c9190614121565b909155505060155460185461338190846140a9565b61338b91906140e6565b601b600082825461339c9190614121565b909155506134919050565b73ffffffffffffffffffffffffffffffffffffffff88166000908152601e602052604090205460ff1680156133de57506000601154115b15613491576064601154876133f391906140a9565b6133fd91906140e6565b91506011546013548361341091906140a9565b61341a91906140e6565b601a600082825461342b9190614121565b909155505060115460125461344090846140a9565b61344a91906140e6565b6019600082825461345b9190614121565b909155505060115460145461347090846140a9565b61347a91906140e6565b601b600082825461348b9190614121565b90915550505b81156134a2576134a2883084613795565b6134ac8183614121565b6134b6908761416f565b95505b6134c4888888613795565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601e6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215151790556135278282613a49565b6040518115159073ffffffffffffffffffffffffffffffffffffffff8416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3060009081526020819052604081205490506000601b54601954601a546135979190614121565b6135a19190614121565b90508115806135ae575080155b156135b7575050565b600a80546135c4916140a9565b8211156135db57600a80546135d8916140a9565b91505b600080600283601a54866135ef91906140a9565b6135f991906140e6565b61360391906140e6565b9050613617613612828661416f565b613ad7565b601a544790819060009061362d906002906140e6565b613637908761416f565b60195461364490856140a9565b61364e91906140e6565b905060006002601a5461366191906140e6565b61366b908861416f565b601b5461367890866140a9565b61368291906140e6565b905061368e8183614121565b613698908461416f565b6000601a8190556019819055601b55925084158015906136b85750600083115b156136c7576136c78584613cfe565b600c5460405173ffffffffffffffffffffffffffffffffffffffff909116908290600081818185875af1925050503d8060008114613721576040519150601f19603f3d011682016040523d82523d6000602084013e613726565b606091505b5050600b5460405191975073ffffffffffffffffffffffffffffffffffffffff16904790600081818185875af1925050503d8060008114613783576040519150601f19603f3d011682016040523d82523d6000602084013e613788565b606091505b5050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316613838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bb1565b73ffffffffffffffffffffffffffffffffffffffff82166138db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bb1565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015613991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610bb1565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906139d5908490614121565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a3b91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166000818152601d602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613b0c57613b0c614186565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bd591906141b5565b81600181518110613be857613be8614186565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613c4d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612698565b6040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790613cc89085906000908690309042906004016141d2565b600060405180830381600087803b158015613ce257600080fd5b505af1158015613cf6573d6000803e3d6000fd5b505050505050565b613d29307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612698565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613d8a60055473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015613e17573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e3c919061425d565b5050505050565b600060208083528351808285015260005b81811015613e7057858101830151858201604001528201613e54565b81811115613e82576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114613ed857600080fd5b50565b60008060408385031215613eee57600080fd5b8235613ef981613eb6565b946020939093013593505050565b600060208284031215613f1957600080fd5b8135613f2481613eb6565b9392505050565b600080600060608486031215613f4057600080fd5b8335613f4b81613eb6565b92506020840135613f5b81613eb6565b929592945050506040919091013590565b600060208284031215613f7e57600080fd5b5035919050565b8015158114613ed857600080fd5b60008060408385031215613fa657600080fd5b8235613fb181613eb6565b91506020830135613fc181613f85565b809150509250929050565b600080600060608486031215613fe157600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561400b57600080fd5b823561401681613eb6565b91506020830135613fc181613eb6565b600181811c9082168061403a57607f821691505b60208210811415614074577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140e1576140e161407a565b500290565b60008261411c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156141345761413461407a565b500190565b60006020828403121561414b57600080fd5b5051919050565b60006020828403121561416457600080fd5b8151613f2481613f85565b6000828210156141815761418161407a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156141c757600080fd5b8151613f2481613eb6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561422f57845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016141fd565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b60008060006060848603121561427257600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a8b16046a2ae88d890cbd9c695a76f20eb344bdadb4fb2b7a8527a2e1a2eaafd64736f6c634300080b0033

Deployed Bytecode Sourcemap

10189:15951:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4907:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5821:169;;;;;;;;;;-1:-1:-1;5821:169:0;;;;;:::i;:::-;;:::i;:::-;;;1319:14:1;;1312:22;1294:41;;1282:2;1267:18;5821:169:0;1154:187:1;25888:249:0;;;;;;;;;;-1:-1:-1;25888:249:0;;;;;:::i;:::-;;:::i;:::-;;11498:64;;;;;;;;;;-1:-1:-1;11498:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10341:43;;;;;;;;;;;;;;;;;;1792:42:1;1780:55;;;1762:74;;1750:2;1735:18;10341:43:0;1598:244:1;5228:108:0;;;;;;;;;;-1:-1:-1;5316:12:0;;5228:108;;;1993:25:1;;;1981:2;1966:18;5228:108:0;1847:177:1;11280:33:0;;;;;;;;;;;;;;;;11240;;;;;;;;;;;;;;;;5998:480;;;;;;;;;;-1:-1:-1;5998:480:0;;;;;:::i;:::-;;:::i;14998:269::-;;;;;;;;;;-1:-1:-1;14998:269:0;;;;;:::i;:::-;;:::i;10546:26::-;;;;;;;;;;-1:-1:-1;10546:26:0;;;;;;;;5127:93;;;;;;;;;;-1:-1:-1;5127:93:0;;5210:2;3048:36:1;;3036:2;3021:18;5127:93:0;2906:184:1;6486:215:0;;;;;;;;;;-1:-1:-1;6486:215:0;;;;;:::i;:::-;;:::i;10391:38::-;;;;;;;;;;;;;;;10660:33;;;;;;;;;;-1:-1:-1;10660:33:0;;;;;;;;10267:28;;;;;;;;;;;;;;;;11060:25;;;;;;;;;;;;;;;;11094:28;;;;;;;;;;;;;;;;10740:31;;;;;;;;;;-1:-1:-1;10740:31:0;;;;;;;;;;;5344:127;;;;;;;;;;-1:-1:-1;5344:127:0;;;;;:::i;:::-;5445:18;;5418:7;5445:18;;;;;;;;;;;;5344:127;8948:150;;;;;;;;;;;;;:::i;14674:154::-;;;;;;;;;;;;;:::i;16486:267::-;;;;;;;;;;-1:-1:-1;16486:267:0;;;;;:::i;:::-;;:::i;10986:30::-;;;;;;;;;;;;;;;;17263:373;;;;;;;;;;-1:-1:-1;17263:373:0;;;;;:::i;:::-;;:::i;24897:456::-;;;;;;;;;;-1:-1:-1;24897:456:0;;;;;:::i;:::-;;:::i;11205:26::-;;;;;;;;;;;;;;;;10233:27;;;;;;;;;;;;;;;;14373:249;;;;;;;;;;;;;:::i;8734:79::-;;;;;;;;;;-1:-1:-1;8799:6:0;;;;8734:79;;25591:289;;;;;;;;;;-1:-1:-1;25591:289:0;;;;;:::i;:::-;;:::i;11129:31::-;;;;;;;;;;;;;;;;5015:104;;;;;;;;;;;;;:::i;16761:246::-;;;;;;;;;;-1:-1:-1;16761:246:0;;;;;:::i;:::-;;:::i;6709:401::-;;;;;;;;;;-1:-1:-1;6709:401:0;;;;;:::i;:::-;;:::i;10508:31::-;;;;;;;;;;-1:-1:-1;10508:31:0;;;;;;;;5479:175;;;;;;;;;;-1:-1:-1;5479:175:0;;;;;:::i;:::-;;:::i;10302:30::-;;;;;;;;;;;;;;;;11720:58;;;;;;;;;;-1:-1:-1;11720:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10700:33;;;;;;;;;;-1:-1:-1;10700:33:0;;;;;;;;;;;18034:182;;;;;;;;;;-1:-1:-1;18034:182:0;;;;;:::i;:::-;;:::i;17644:382::-;;;;;;;;;;-1:-1:-1;17644:382:0;;;;;:::i;:::-;;:::i;15557:284::-;;;;;;;;;;-1:-1:-1;15557:284:0;;;;;:::i;:::-;;:::i;10904:39::-;;;;;;;;;;-1:-1:-1;10904:39:0;;;;;;;;11320:28;;;;;;;;;;;;;;;;15911:350;;;;;;;;;;-1:-1:-1;15911:350:0;;;;;:::i;:::-;;:::i;10952:27::-;;;;;;;;;;;;;;;;15275:274;;;;;;;;;;-1:-1:-1;15275:274:0;;;;;:::i;:::-;;:::i;5662:151::-;;;;;;;;;;-1:-1:-1;5662:151:0;;;;;:::i;:::-;5778:18;;;;5751:7;5778:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5662:151;10466:33;;;;;;;;;;;;;;;;14892:98;;;;;;;;;;;;;:::i;10581:37::-;;;;;;;;;;;;;;;;11023:30;;;;;;;;;;;;;;;;9106:244;;;;;;;;;;-1:-1:-1;9106:244:0;;;;;:::i;:::-;;:::i;25423:160::-;;;;;;;;;;;;;:::i;11167:31::-;;;;;;;;;;;;;;;;4907:100;4961:13;4994:5;4987:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4907:100;:::o;5821:169::-;5904:4;5921:39;1136:10;5944:7;5953:6;5921:8;:39::i;:::-;-1:-1:-1;5978:4:0;5821:169;;;;:::o;25888:249::-;8861:6;;:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;;;;;;;;;25972:26:::1;::::0;::::1;25964:71;;;::::0;::::1;::::0;;5324:2:1;25964:71:0::1;::::0;::::1;5306:21:1::0;;;5343:18;;;5336:30;5402:34;5382:18;;;5375:62;5454:18;;25964:71:0::1;5122:356:1::0;25964:71:0::1;26046:11;:35:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;26097:32:::1;::::0;::::1;::::0;-1:-1:-1;;26097:32:0::1;25888:249:::0;:::o;5998:480::-;6138:4;6155:36;6165:6;6173:9;6184:6;6155:9;:36::i;:::-;6231:19;;;6204:24;6231:19;;;:11;:19;;;;;;;;1136:10;6231:33;;;;;;;;6283:26;;;;6275:79;;;;;;;5685:2:1;6275:79:0;;;5667:21:1;5724:2;5704:18;;;5697:30;5763:34;5743:18;;;5736:62;5834:10;5814:18;;;5807:38;5862:19;;6275:79:0;5483:404:1;6275:79:0;6382:57;6391:6;1136:10;6432:6;6413:16;:25;6382:8;:57::i;:::-;-1:-1:-1;6466:4:0;;5998:480;-1:-1:-1;;;;5998:480:0:o;14998:269::-;8861:6;;:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;4761:356:1;8853:67:0;15117:4:::1;15111;15091:13;5316:12:::0;;;5228:108;15091:13:::1;:17;::::0;15107:1:::1;15091:17;:::i;:::-;:24;;;;:::i;:::-;15090:31;;;;:::i;:::-;15080:6;:41;;15072:95;;;::::0;::::1;::::0;;6795:2:1;15072:95:0::1;::::0;::::1;6777:21:1::0;6834:2;6814:18;;;6807:30;6873:34;6853:18;;;6846:62;6944:11;6924:18;;;6917:39;6973:19;;15072:95:0::1;6593:405:1::0;15072:95:0::1;15193:17;:6:::0;15203::::1;15193:17;:::i;:::-;15178:12;:32:::0;;;15226:33:::1;::::0;1993:25:1;;;15226:33:0::1;::::0;1981:2:1;1966:18;15226:33:0::1;;;;;;;;14998:269:::0;:::o;6486:215::-;1136:10;6574:4;6623:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;6574:4;;6591:80;;6614:7;;6623:47;;6660:10;;6623:47;:::i;:::-;6591:8;:80::i;8948:150::-;8861:6;;:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;4761:356:1;8853:67:0;9041:6:::1;::::0;9020:40:::1;::::0;9057:1:::1;::::0;9020:40:::1;9041:6;::::0;9020:40:::1;::::0;9057:1;;9020:40:::1;9071:6;:19:::0;;;::::1;::::0;;8948:150::o;14674:154::-;8861:6;;:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;4761:356:1;8853:67:0;14728:14:::1;:22:::0;;;;;::::1;::::0;;;14761:20:::1;:28:::0;;;;::::1;::::0;;14805:15:::1;::::0;::::1;::::0;14745:5:::1;::::0;14805:15:::1;14674:154::o:0;16486:267::-;8861:6;;:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;4761:356:1;8853:67:0;16582:4:::1;16578:111;;16620:13;16610:23;;:6;:23;;;;16602:75;;;::::0;::::1;::::0;;7338:2:1;16602:75:0::1;::::0;::::1;7320:21:1::0;7377:2;7357:18;;;7350:30;7416:34;7396:18;;;7389:62;7487:9;7467:18;;;7460:37;7514:19;;16602:75:0::1;7136:403:1::0;16602:75:0::1;16699:39;::::0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;16486:267::o;17263:373::-;8861:6;;:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;4761:356:1;8853:67:0;17380:15:::1;:31:::0;;;17422:15:::1;:31:::0;;;17464:10:::1;:21:::0;;;17477:8;17511:33:::1;17440:13:::0;17398;17511:33:::1;:::i;:::-;:46;;;;:::i;:::-;17496:12;:61:::0;;;17592:2:::1;-1:-1:-1::0;17576:18:0::1;17568:60;;;::::0;::::1;::::0;;7746:2:1;17568:60:0::1;::::0;::::1;7728:21:1::0;7785:2;7765:18;;;7758:30;7824:31;7804:18;;;7797:59;7873:18;;17568:60:0::1;7544:353:1::0;17568:60:0::1;17263:373:::0;;;:::o;24897:456::-;8861:6;;24984:10;;8861:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;4761:356:1;8853:67:0;25015:20:::1;::::0;::::1;25007:59;;;::::0;::::1;::::0;;8104:2:1;25007:59:0::1;::::0;::::1;8086:21:1::0;8143:2;8123:18;;;8116:30;8182:28;8162:18;;;8155:56;8228:18;;25007:59:0::1;7902:350:1::0;25007:59:0::1;25085:23;::::0;::::1;25103:4;25085:23;;25077:64;;;::::0;::::1;::::0;;8459:2:1;25077:64:0::1;::::0;::::1;8441:21:1::0;8498:2;8478:18;;;8471:30;8537;8517:18;;;8510:58;8585:18;;25077:64:0::1;8257:352:1::0;25077:64:0::1;25179:39;::::0;;;;25212:4:::1;25179:39;::::0;::::1;1762:74:1::0;25152:24:0::1;::::0;25179::::1;::::0;::::1;::::0;::::1;::::0;1735:18:1;;25179:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25237:46;::::0;;;;:23:::1;8995:55:1::0;;;25237:46:0::1;::::0;::::1;8977:74:1::0;9067:18;;;9060:34;;;25152:66:0;;-1:-1:-1;25237:23:0;;::::1;::::0;::::1;::::0;8950:18:1;;25237:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25299;::::0;;9007:42:1;8995:55;;8977:74;;9082:2;9067:18;;9060:34;;;25229:54:0;;-1:-1:-1;25299:46:0::1;::::0;8950:18:1;25299:46:0::1;;;;;;;24996:357;24897:456:::0;;;;:::o;14373:249::-;8861:6;;:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;4761:356:1;8853:67:0;14437:13:::1;::::0;::::1;::::0;::::1;;;14436:14;14428:50;;;::::0;::::1;::::0;;9557:2:1;14428:50:0::1;::::0;::::1;9539:21:1::0;9596:2;9576:18;;;9569:30;9635:25;9615:18;;;9608:53;9678:18;;14428:50:0::1;9355:347:1::0;14428:50:0::1;14489:13;:20:::0;;14520:18;;;;;;14570:12:::1;14549:18;:33:::0;14598:16:::1;::::0;::::1;::::0;-1:-1:-1;;14598:16:0::1;14373:249::o:0;25591:289::-;8861:6;;:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;4761:356:1;8853:67:0;25685:31:::1;::::0;::::1;25677:81;;;::::0;::::1;::::0;;9909:2:1;25677:81:0::1;::::0;::::1;9891:21:1::0;9948:2;9928:18;;;9921:30;9987:34;9967:18;;;9960:62;10058:7;10038:18;;;10031:35;10083:19;;25677:81:0::1;9707:401:1::0;25677:81:0::1;25769:16;:45:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;25830:42:::1;::::0;::::1;::::0;-1:-1:-1;;25830:42:0::1;25591:289:::0;:::o;5015:104::-;5071:13;5104:7;5097:14;;;;;:::i;16761:246::-;8861:6;;:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;4761:356:1;8853:67:0;16870:13:::1;16862:21;;:4;:21;;;;16854:91;;;::::0;::::1;::::0;;10315:2:1;16854:91:0::1;::::0;::::1;10297:21:1::0;10354:2;10334:18;;;10327:30;10393:34;10373:18;;;10366:62;10464:27;10444:18;;;10437:55;10509:19;;16854:91:0::1;10113:421:1::0;16854:91:0::1;16958:41;16987:4;16993:5;16958:28;:41::i;:::-;16761:246:::0;;:::o;6709:401::-;1136:10;6802:4;6846:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;6899:35;;;;6891:85;;;;;;;10741:2:1;6891:85:0;;;10723:21:1;10780:2;10760:18;;;10753:30;10819:34;10799:18;;;10792:62;10890:7;10870:18;;;10863:35;10915:19;;6891:85:0;10539:401:1;6891:85:0;7004:67;1136:10;7027:7;7055:15;7036:16;:34;7004:8;:67::i;:::-;-1:-1:-1;7098:4:0;;6709:401;-1:-1:-1;;;6709:401:0:o;5479:175::-;5565:4;5582:42;1136:10;5606:9;5617:6;5582:9;:42::i;18034:182::-;8861:6;;:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;4761:356:1;8853:67:0;18119:28:::1;::::0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;18174:34;;1294:41:1;;;18174:34:0::1;::::0;1267:18:1;18174:34:0::1;;;;;;;18034:182:::0;;:::o;17644:382::-;8861:6;;:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;4761:356:1;8853:67:0;17762:16:::1;:32:::0;;;17805:16:::1;:32:::0;;;17848:11:::1;:22:::0;;;17862:8;17897:35:::1;17824:13:::0;17781;17897:35:::1;:::i;:::-;:49;;;;:::i;:::-;17881:13;:65:::0;;;17982:2:::1;-1:-1:-1::0;17965:19:0::1;17957:61;;;::::0;::::1;::::0;;11147:2:1;17957:61:0::1;::::0;::::1;11129:21:1::0;11186:2;11166:18;;;11159:30;11225:31;11205:18;;;11198:59;11274:18;;17957:61:0::1;10945:353:1::0;15557:284:0;8861:6;;:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;4761:356:1;8853:67:0;15679:4:::1;15673;15653:13;5316:12:::0;;;5228:108;15653:13:::1;:17;::::0;15669:1:::1;15653:17;:::i;:::-;:24;;;;:::i;:::-;15652:31;;;;:::i;:::-;15642:6;:41;;15634:98;;;::::0;::::1;::::0;;11505:2:1;15634:98:0::1;::::0;::::1;11487:21:1::0;11544:2;11524:18;;;11517:30;11583:34;11563:18;;;11556:62;11654:14;11634:18;;;11627:42;11686:19;;15634:98:0::1;11303:408:1::0;15634:98:0::1;15761:17;:6:::0;15771::::1;15761:17;:::i;:::-;15743:15;:35:::0;;;15794:39:::1;::::0;1993:25:1;;;15794:39:0::1;::::0;1981:2:1;1966:18;15794:39:0::1;1847:177:1::0;15911:350:0;8861:6;;:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;4761:356:1;8853:67:0;16035:6:::1;16015:13;5316:12:::0;;;5228:108;16015:13:::1;:17;::::0;16031:1:::1;16015:17;:::i;:::-;:26;;;;:::i;:::-;16002:9;:39;;15994:105;;;::::0;::::1;::::0;;11918:2:1;15994:105:0::1;::::0;::::1;11900:21:1::0;11957:2;11937:18;;;11930:30;11996:34;11976:18;;;11969:62;12067:23;12047:18;;;12040:51;12108:19;;15994:105:0::1;11716:417:1::0;15994:105:0::1;16151:4;16131:13;5316:12:::0;;;5228:108;16131:13:::1;:17;::::0;16147:1:::1;16131:17;:::i;:::-;:24;;;;:::i;:::-;16118:9;:37;;16110:102;;;::::0;::::1;::::0;;12340:2:1;16110:102:0::1;::::0;::::1;12322:21:1::0;12379:2;12359:18;;;12352:30;12418:34;12398:18;;;12391:62;12489:22;12469:18;;;12462:50;12529:19;;16110:102:0::1;12138:416:1::0;16110:102:0::1;16223:18;:30:::0;15911:350::o;15275:274::-;8861:6;;:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;4761:356:1;8853:67:0;15395:4:::1;15389;15369:13;5316:12:::0;;;5228:108;15369:13:::1;:17;::::0;15385:1:::1;15369:17;:::i;:::-;:24;;;;:::i;:::-;15368:31;;;;:::i;:::-;15358:6;:41;;15350:96;;;::::0;::::1;::::0;;12761:2:1;15350:96:0::1;::::0;::::1;12743:21:1::0;12800:2;12780:18;;;12773:30;12839:34;12819:18;;;12812:62;12910:12;12890:18;;;12883:40;12940:19;;15350:96:0::1;12559:406:1::0;15350:96:0::1;15473:17;:6:::0;15483::::1;15473:17;:::i;:::-;15457:13;:33:::0;;;15506:35:::1;::::0;1993:25:1;;;15506:35:0::1;::::0;1981:2:1;1966:18;15506:35:0::1;1847:177:1::0;14892:98:0;8861:6;;:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;4761:356:1;8853:67:0;14954:20:::1;:28:::0;;;::::1;::::0;;14892:98::o;9106:244::-;8861:6;;:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;4761:356:1;8853:67:0;9195:22:::1;::::0;::::1;9187:73;;;::::0;::::1;::::0;;13172:2:1;9187:73:0::1;::::0;::::1;13154:21:1::0;13211:2;13191:18;;;13184:30;13250:34;13230:18;;;13223:62;13321:8;13301:18;;;13294:36;13347:19;;9187:73:0::1;12970:402:1::0;9187:73:0::1;9297:6;::::0;9276:38:::1;::::0;::::1;::::0;;::::1;::::0;9297:6:::1;::::0;9276:38:::1;::::0;9297:6:::1;::::0;9276:38:::1;9325:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;9106:244::o;25423:160::-;8861:6;;:22;:6;1136:10;8861:22;8853:67;;;;;;;4963:2:1;8853:67:0;;;4945:21:1;;;4982:18;;;4975:30;5041:34;5021:18;;;5014:62;5093:18;;8853:67:0;4761:356:1;8853:67:0;25517:58:::1;::::0;25481:12:::1;::::0;25525:10:::1;::::0;25549:21:::1;::::0;25481:12;25517:58;25481:12;25517:58;25549:21;25525:10;25517:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;25423:160:0:o;8027:380::-;8163:19;;;8155:68;;;;;;;13789:2:1;8155:68:0;;;13771:21:1;13828:2;13808:18;;;13801:30;13867:34;13847:18;;;13840:62;13938:6;13918:18;;;13911:34;13962:19;;8155:68:0;13587:400:1;8155:68:0;8242:21;;;8234:68;;;;;;;14194:2:1;8234:68:0;;;14176:21:1;14233:2;14213:18;;;14206:30;14272:34;14252:18;;;14245:62;14343:4;14323:18;;;14316:32;14365:19;;8234:68:0;13992:398:1;8234:68:0;8315:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8367:32;;1993:25:1;;;8367:32:0;;1966:18:1;8367:32:0;;;;;;;8027:380;;;:::o;18224:4128::-;18324:18;;;18316:68;;;;;;;14597:2:1;18316:68:0;;;14579:21:1;14636:2;14616:18;;;14609:30;14675:34;14655:18;;;14648:62;14746:7;14726:18;;;14719:35;14771:19;;18316:68:0;14395:401:1;18316:68:0;18403:16;;;18395:64;;;;;;;15003:2:1;18395:64:0;;;14985:21:1;15042:2;15022:18;;;15015:30;15081:34;15061:18;;;15054:62;15152:5;15132:18;;;15125:33;15175:19;;18395:64:0;14801:399:1;18395:64:0;18487:1;18478:6;:10;18470:52;;;;;;;15407:2:1;18470:52:0;;;15389:21:1;15446:2;15426:18;;;15419:30;15485:31;15465:18;;;15458:59;15534:18;;18470:52:0;15205:353:1;18470:52:0;18540:14;;;;18537:1824;;;8799:6;;;18574:15;;;8799:6;;18574:15;;;;:32;;-1:-1:-1;8799:6:0;;;18593:13;;;8799:6;;18593:13;;18574:32;:52;;;;-1:-1:-1;18610:16:0;;;;;18574:52;:77;;;;-1:-1:-1;18630:21:0;;;18644:6;18630:21;;18574:77;18570:1780;;;18675:13;;;;;;;18671:172;;18720:37;;;;;;;:31;:37;;;;;;;;;:76;;-1:-1:-1;18761:35:0;;;;;;;:31;:35;;;;;;;;18720:76;18712:111;;;;;;;15765:2:1;18712:111:0;;;15747:21:1;15804:2;15784:18;;;15777:30;15843:24;15823:18;;;15816:52;15885:18;;18712:111:0;15563:346:1;18712:111:0;18999:20;;;;18995:519;;;19061:15;19047:30;;:2;:30;;;;:62;;;;;19095:13;19081:28;;:2;:28;;;;19047:62;19043:452;;;19187:16;19202:1;19187:12;:16;:::i;:::-;19174:9;19145:39;;;;:28;:39;;;;;;:58;:113;;;;-1:-1:-1;19242:16:0;19257:1;19242:12;:16;:::i;:::-;19207:32;;;;;;;:28;:32;;;;;;:51;19145:113;19137:179;;;;;;;16246:2:1;19137:179:0;;;16228:21:1;16285:2;16265:18;;;16258:30;16324:34;16304:18;;;16297:62;16395:23;16375:18;;;16368:51;16436:19;;19137:179:0;16044:417:1;19137:179:0;19372:9;19343:39;;;;:28;:39;;;;;;19385:12;19343:54;;;;:39;19424:32;;;;;;:47;19043:452;19566:31;;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;19602:35:0;;;;;;;:31;:35;;;;;;;;19601:36;19566:71;19562:773;;;19680:12;;19670:6;:22;;19662:75;;;;;;;16668:2:1;19662:75:0;;;16650:21:1;16707:2;16687:18;;;16680:30;16746:34;16726:18;;;16719:62;16817:10;16797:18;;;16790:38;16845:19;;19662:75:0;16466:404:1;19662:75:0;19794:15;;5445:18;;;5418:7;5445:18;;;;;;;;;;;19768:22;;:6;:22;:::i;:::-;:41;;19760:78;;;;;;;17077:2:1;19760:78:0;;;17059:21:1;17116:2;17096:18;;;17089:30;17155:26;17135:18;;;17128:54;17199:18;;19760:78:0;16875:348:1;19760:78:0;19562:773;;;19914:29;;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;19948:37:0;;;;;;;:31;:37;;;;;;;;19947:38;19914:71;19910:425;;;20028:13;;20018:6;:23;;20010:78;;;;;;;17430:2:1;20010:78:0;;;17412:21:1;17469:2;17449:18;;;17442:30;17508:34;17488:18;;;17481:62;17579:12;17559:18;;;17552:40;17609:19;;20010:78:0;17228:406:1;19910:425:0;20136:35;;;;;;;:31;:35;;;;;;;;20135:36;:78;;;;-1:-1:-1;20176:37:0;;;;;;;:31;:37;;;;;;;;20175:38;20135:78;20131:204;;;20271:15;;5445:18;;;5418:7;5445:18;;;;;;;;;;;20245:22;;:6;:22;:::i;:::-;:41;;20237:78;;;;;;;17077:2:1;20237:78:0;;;17059:21:1;17116:2;17096:18;;;17089:30;17155:26;17135:18;;;17128:54;17199:18;;20237:78:0;16875:348:1;20237:78:0;20422:4;20373:28;5445:18;;;;;;;;;;;20480;;20456:42;;;;;;;20514:22;;-1:-1:-1;20525:11:0;;;;;;;20514:22;:35;;;;-1:-1:-1;20541:8:0;;;;20540:9;20514:35;:71;;;;-1:-1:-1;20554:31:0;;;;;;;:25;:31;;;;;;;;20553:32;20514:71;:101;;;;-1:-1:-1;20590:25:0;;;;;;;:19;:25;;;;;;;;20589:26;20514:101;:129;;;;-1:-1:-1;20620:23:0;;;;;;;:19;:23;;;;;;;;20619:24;20514:129;20511:236;;;20660:8;:15;;;;20671:4;20660:15;;;20692:10;:8;:10::i;:::-;20719:8;:16;;;;;;20511:236;20877:25;;;20759:12;20877:25;;;:19;:25;;;;;;20774:4;;20877:25;;;:52;;-1:-1:-1;20906:23:0;;;;;;;:19;:23;;;;;;;;20877:52;20874:99;;;-1:-1:-1;20956:5:0;20874:99;20985:12;21012:21;21115:7;21112:1187;;;21162:1;21143:18;;:20;:63;;;;;21194:12;21168:18;;21189:1;21168:22;;;;:::i;:::-;21167:39;21143:63;21140:996;;;21256:3;21242:11;:6;21251:2;21242:11;:::i;:::-;:17;;;;:::i;:::-;21300:16;;21226:33;;-1:-1:-1;21278:54:0;;21294:4;;21300:16;;21226:33;21278:15;:54::i;:::-;21140:996;;;21395:29;;;;;;;:25;:29;;;;;;;;:50;;;;;21444:1;21428:13;;:17;21395:50;21391:745;;;21496:3;21481:13;;21472:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;21465:34;;21566:13;;21547:16;;21540:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;21518:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;21646:13:0;;21627:16;;21620:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;21598:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;21716:13:0;;21702:11;;21695:18;;:4;:18;:::i;:::-;:34;;;;:::i;:::-;21678:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;21391:745:0;;-1:-1:-1;21391:745:0;;21790:31;;;;;;;:25;:31;;;;;;;;:51;;;;;21840:1;21825:12;;:16;21790:51;21787:349;;;21893:3;21878:12;;21869:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;21862:34;;21962:12;;21944:15;;21937:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;21915:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;22040:12:0;;22022:15;;22015:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;21993:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;22108:12:0;;22095:10;;22088:17;;:4;:17;:::i;:::-;:32;;;;:::i;:::-;22071:13;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;21787:349:0;22155:8;;22152:89;;22183:42;22199:4;22213;22220;22183:15;:42::i;:::-;22267:20;22274:13;22267:4;:20;:::i;:::-;22257:30;;;;:::i;:::-;;;21112:1187;22311:33;22327:4;22333:2;22337:6;22311:15;:33::i;:::-;18303:4049;;;;;18224:4128;;;:::o;17015:240::-;17098:31;;;;;;;:25;:31;;;;;:39;;;;;;;;;;17150;17098:31;:39;17150:26;:39::i;:::-;17207:40;;;;;;;;;;;;;;;17015:240;;:::o;23489:1400::-;23572:4;23528:23;5445:18;;;;;;;;;;;23528:50;;23589:25;23659:13;;23638:18;;23617;;:39;;;;:::i;:::-;:55;;;;:::i;:::-;23589:83;-1:-1:-1;23688:20:0;;;:46;;-1:-1:-1;23712:22:0;;23688:46;23685:60;;;23737:7;;23489:1400::o;23685:60::-;23778:18;;;:23;;;:::i;:::-;23760:15;:41;23757:113;;;23835:18;;;:23;;;:::i;:::-;23817:41;;23757:113;23882:12;23956:23;24041:1;24021:17;24000:18;;23982:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;23956:86;-1:-1:-1;24055:51:0;24072:33;23956:86;24072:15;:33;:::i;:::-;24055:16;:51::i;:::-;24303:18;;24140:21;;;;24119:18;;24303:20;;24322:1;;24303:20;:::i;:::-;24282:42;;:17;:42;:::i;:::-;24260:18;;24247:31;;:10;:31;:::i;:::-;:78;;;;:::i;:::-;24221:104;;24336:18;24427:1;24408:18;;:20;;;;:::i;:::-;24387:42;;:17;:42;:::i;:::-;24370:13;;24357:26;;:10;:26;:::i;:::-;:73;;;;:::i;:::-;24336:94;-1:-1:-1;24462:28:0;24336:94;24462:15;:28;:::i;:::-;24443:47;;;;:::i;:::-;24524:1;24503:18;:22;;;24536:18;:22;;;24569:13;:17;24443:47;-1:-1:-1;24602:19:0;;;;;:42;;;24643:1;24625:15;:19;24602:42;24599:119;;;24660:46;24673:15;24690;24660:12;:46::i;:::-;24751:11;;24743:48;;24751:11;;;;;24776:10;;24743:48;;;;24776:10;24751:11;24743:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24825:16:0;;24817:64;;24730:61;;-1:-1:-1;24825:16:0;;;24855:21;;24817:64;;;;24855:21;24825:16;24817:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23489:1400:0:o;7118:602::-;7258:20;;;7250:70;;;;;;;14597:2:1;7250:70:0;;;14579:21:1;14636:2;14616:18;;;14609:30;14675:34;14655:18;;;14648:62;14746:7;14726:18;;;14719:35;14771:19;;7250:70:0;14395:401:1;7250:70:0;7339:23;;;7331:71;;;;;;;15003:2:1;7331:71:0;;;14985:21:1;15042:2;15022:18;;;15015:30;15081:34;15061:18;;;15054:62;15152:5;15132:18;;;15125:33;15175:19;;7331:71:0;14801:399:1;7331:71:0;7439:17;;;7415:21;7439:17;;;;;;;;;;;7475:23;;;;7467:74;;;;;;;17841:2:1;7467:74:0;;;17823:21:1;17880:2;17860:18;;;17853:30;17919:34;17899:18;;;17892:62;17990:8;17970:18;;;17963:36;18016:19;;7467:74:0;17639:402:1;7467:74:0;7569:17;;;;:9;:17;;;;;;;;;;;7589:22;;;7569:42;;7629:20;;;;;;;;:30;;7605:6;;7569:9;7629:30;;7605:6;;7629:30;:::i;:::-;;;;;;;;7694:9;7677:35;;7686:6;7677:35;;;7705:6;7677:35;;;;1993:25:1;;1981:2;1966:18;;1847:177;7677:35:0;;;;;;;;7239:481;7118:602;;;:::o;16269:207::-;16357:39;;;;;;;:31;:39;;;;;;;;;:52;;;;;;;;;;;;;16425:43;;18214:74:1;;;18304:18;;;18297:50;16425:43:0;;18187:18:1;16425:43:0;;;;;;;16269:207;;:::o;22360:591::-;22512:16;;;22526:1;22512:16;;;;;;;;22488:21;;22512:16;;;;;;;;;;-1:-1:-1;22512:16:0;22488:40;;22557:4;22539;22544:1;22539:7;;;;;;;;:::i;:::-;;;;;;:23;;;;;;;;;;;22583:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22573:4;22578:1;22573:7;;;;;;;;:::i;:::-;;;;;;:32;;;;;;;;;;;22618:62;22635:4;22650:15;22668:11;22618:8;:62::i;:::-;22719:224;;;;;:66;:15;:66;;;;:224;;22800:11;;22826:1;;22870:4;;22897;;22917:15;;22719:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22415:536;22360:591;:::o;22959:522::-;23107:62;23124:4;23139:15;23157:11;23107:8;:62::i;:::-;23212:15;:31;;;23251:9;23284:4;23304:11;23330:1;23373;23424:7;8799:6;;;;;8734:79;23424:7;23212:261;;;;;;;;;;20336:42:1;20405:15;;;23212:261:0;;;20387:34:1;20437:18;;;20430:34;;;;20480:18;;;20473:34;;;;20523:18;;;20516:34;20587:15;;;20566:19;;;20559:44;23447:15:0;20619:19:1;;;20612:35;20298:19;;23212:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22959:522;;:::o;14:656: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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;586:2:1;574:15;591:66;570:88;555:104;;;;661:2;551:113;;14:656;-1:-1:-1;;;14:656:1:o;675:154::-;761:42;754:5;750:54;743:5;740:65;730:93;;819:1;816;809:12;730:93;675:154;:::o;834:315::-;902:6;910;963:2;951:9;942:7;938:23;934:32;931:52;;;979:1;976;969:12;931:52;1018:9;1005:23;1037:31;1062:5;1037:31;:::i;:::-;1087:5;1139:2;1124:18;;;;1111:32;;-1:-1:-1;;;834:315:1:o;1346:247::-;1405:6;1458:2;1446:9;1437:7;1433:23;1429:32;1426:52;;;1474:1;1471;1464:12;1426:52;1513:9;1500:23;1532:31;1557:5;1532:31;:::i;:::-;1582:5;1346:247;-1:-1:-1;;;1346:247:1:o;2029:456::-;2106:6;2114;2122;2175:2;2163:9;2154:7;2150:23;2146:32;2143:52;;;2191:1;2188;2181:12;2143:52;2230:9;2217:23;2249:31;2274:5;2249:31;:::i;:::-;2299:5;-1:-1:-1;2356:2:1;2341:18;;2328:32;2369:33;2328:32;2369:33;:::i;:::-;2029:456;;2421:7;;-1:-1:-1;;;2475:2:1;2460:18;;;;2447:32;;2029:456::o;2490:180::-;2549:6;2602:2;2590:9;2581:7;2577:23;2573:32;2570:52;;;2618:1;2615;2608:12;2570:52;-1:-1:-1;2641:23:1;;2490:180;-1:-1:-1;2490:180:1:o;3095:118::-;3181:5;3174:13;3167:21;3160:5;3157:32;3147:60;;3203:1;3200;3193:12;3218:382;3283:6;3291;3344:2;3332:9;3323:7;3319:23;3315:32;3312:52;;;3360:1;3357;3350:12;3312:52;3399:9;3386:23;3418:31;3443:5;3418:31;:::i;:::-;3468:5;-1:-1:-1;3525:2:1;3510:18;;3497:32;3538:30;3497:32;3538:30;:::i;:::-;3587:7;3577:17;;;3218:382;;;;;:::o;3605:316::-;3682:6;3690;3698;3751:2;3739:9;3730:7;3726:23;3722:32;3719:52;;;3767:1;3764;3757:12;3719:52;-1:-1:-1;;3790:23:1;;;3860:2;3845:18;;3832:32;;-1:-1:-1;3911:2:1;3896:18;;;3883:32;;3605:316;-1:-1:-1;3605:316:1:o;3926:388::-;3994:6;4002;4055:2;4043:9;4034:7;4030:23;4026:32;4023:52;;;4071:1;4068;4061:12;4023:52;4110:9;4097:23;4129:31;4154:5;4129:31;:::i;:::-;4179:5;-1:-1:-1;4236:2:1;4221:18;;4208:32;4249:33;4208:32;4249:33;:::i;4319:437::-;4398:1;4394:12;;;;4441;;;4462:61;;4516:4;4508:6;4504:17;4494:27;;4462:61;4569:2;4561:6;4558:14;4538:18;4535:38;4532:218;;;4606:77;4603:1;4596:88;4707:4;4704:1;4697:15;4735:4;4732:1;4725:15;4532:218;;4319:437;;;:::o;5892:184::-;5944:77;5941:1;5934:88;6041:4;6038:1;6031:15;6065:4;6062:1;6055:15;6081:228;6121:7;6247:1;6179:66;6175:74;6172:1;6169:81;6164:1;6157:9;6150:17;6146:105;6143:131;;;6254:18;;:::i;:::-;-1:-1:-1;6294:9:1;;6081:228::o;6314:274::-;6354:1;6380;6370:189;;6415:77;6412:1;6405:88;6516:4;6513:1;6506:15;6544:4;6541:1;6534:15;6370:189;-1:-1:-1;6573:9:1;;6314:274::o;7003:128::-;7043:3;7074:1;7070:6;7067:1;7064:13;7061:39;;;7080:18;;:::i;:::-;-1:-1:-1;7116:9:1;;7003:128::o;8614:184::-;8684:6;8737:2;8725:9;8716:7;8712:23;8708:32;8705:52;;;8753:1;8750;8743:12;8705:52;-1:-1:-1;8776:16:1;;8614:184;-1:-1:-1;8614:184:1:o;9105:245::-;9172:6;9225:2;9213:9;9204:7;9200:23;9196:32;9193:52;;;9241:1;9238;9231:12;9193:52;9273:9;9267:16;9292:28;9314:5;9292:28;:::i;15914:125::-;15954:4;15982:1;15979;15976:8;15973:34;;;15987:18;;:::i;:::-;-1:-1:-1;16024:9:1;;15914:125::o;18547:184::-;18599:77;18596:1;18589:88;18696:4;18693:1;18686:15;18720:4;18717:1;18710:15;18736:251;18806:6;18859:2;18847:9;18838:7;18834:23;18830:32;18827:52;;;18875:1;18872;18865:12;18827:52;18907:9;18901:16;18926:31;18951:5;18926:31;:::i;18992:1026::-;19254:4;19302:3;19291:9;19287:19;19333:6;19322:9;19315:25;19359:2;19397:6;19392:2;19381:9;19377:18;19370:34;19440:3;19435:2;19424:9;19420:18;19413:31;19464:6;19499;19493:13;19530:6;19522;19515:22;19568:3;19557:9;19553:19;19546:26;;19607:2;19599:6;19595:15;19581:29;;19628:1;19638:218;19652:6;19649:1;19646:13;19638:218;;;19717:13;;19732:42;19713:62;19701:75;;19831:15;;;;19796:12;;;;19674:1;19667:9;19638:218;;;-1:-1:-1;;19924:42:1;19912:55;;;;19907:2;19892:18;;19885:83;-1:-1:-1;;;19999:3:1;19984:19;19977:35;19873:3;18992:1026;-1:-1:-1;;;18992:1026:1:o;20658:306::-;20746:6;20754;20762;20815:2;20803:9;20794:7;20790:23;20786:32;20783:52;;;20831:1;20828;20821:12;20783:52;20860:9;20854:16;20844:26;;20910:2;20899:9;20895:18;20889:25;20879:35;;20954:2;20943:9;20939:18;20933:25;20923:35;;20658:306;;;;;:::o

Swarm Source

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