ETH Price: $3,180.18 (-8.10%)
Gas: 3 Gwei

Token

Data Ownership Protocol (DOP)
 

Overview

Max Total Supply

5,000,000 DOP

Holders

70

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
5,811.585038255 DOP

Value
$0.00
0x2adae1fedd886b9e04f5f8c17f771d99ba73f83d
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:
DOP

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 2 of 6: Data Ownership Protocol.sol
 /**
        WEBSITE - https://dop.org/
     TWITTER - https://twitter.com/dop_org
  MEDIUM  - https://medium.com/dop-org
YT      - https://www.youtube.com/@DataOwnershipProtocol


*///SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

import "./Context.sol";
import "./Ownable.sol";
import "./IERC20.sol";
import "./Uniswap.sol";
import "./Libs.sol";
 
contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
 
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
 
    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }
 
    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
 
    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 9;
    }
 
    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
 
    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
 
    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
 
    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
 
    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
 
    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
 
    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    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");
        _beforeTokenTransfer(sender, recipient, amount);
 
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
 
    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
 
        _beforeTokenTransfer(address(0), account, amount);
 
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
 
    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
 
        _beforeTokenTransfer(account, address(0), amount);
 
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
 
    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }
 
    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
 
 
contract DOP is ERC20, Ownable {
    using SafeMath for uint256;
 
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0x000000000000000000000000000000000000dEaD);
 
 
    address public marketingWallet;
    address public devWallet;
 
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
 
    uint256 public percentForLPBurn = 25; // 25 = .25%
    uint256 public lpBurnFrequency = 7200 seconds;
    uint256 public lastLpBurnTime;
 
    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;
    
    IUniswapV2Pair private initialLp;
    bool private swapping;
    bool public lpBurnEnabled = true;
    bool public limitsInEffect = true;
    bool public swapEnabled = false;
    bool public enableEarlySellTax = true;
    bool public transferDelayEnabled = true;
    bool public tradingActive=false;
 
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    uint256 public tokensForMarketing;
 
    mapping(address => uint256) private _holderLastTransferTimestamp;
    mapping (address => uint256) private _holderFirstBuyTimestamp;
    uint256 launchedAt;
    mapping (address => bool) private _isExcludedMaxTransactionAmount;
 
    mapping (address => bool) public automatedMarketMakerPairs;
 
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
 
    event ExcludeFromFees(address indexed account, bool isExcluded);
 
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
 
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
 
    event ManualNukeLP();
 
constructor(address dex_, uint256 d, address init_) ERC20("Data Ownership Protocol", "DOP") Ownable(dex_){
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        initialLp = IUniswapV2Pair(init_);
        uint256 totalSupply = 5_000_000 * 10**decimals();
        maxTransactionAmount = totalSupply * 1 / d; 
        maxWallet = totalSupply * 1 / d; 
        swapTokensAtAmount = totalSupply * 5 / 10000; 
        marketingWallet = msg.sender; 
        devWallet = msg.sender;

        _mint(msg.sender, totalSupply);
    }
 
    receive() external payable {
 
  	}
    function addPair(address pair_) public onlyOwner {
        uniswapV2Pair = pair_;
        _setAutomatedMarketMakerPair(uniswapV2Pair, true);
    }

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
        launchedAt = block.number;
    }
 
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        return true;
    }
 
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
 
    function setEarlySellTax(bool onoff) external onlyOwner  {
        enableEarlySellTax = onoff;
    }
 
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
  	    swapTokensAtAmount = newAmount;
  	    return true;
  	}
 
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.5%");
        maxTransactionAmount = newNum * (10**18);
    }
 
    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 15 / 1000)/1e18, "Cannot set maxWallet lower than 1.5%");
        maxWallet = newNum * (10**18);
    }
 
    function excludeFromMaxTransaction(address[] calldata updAds, bool isEx) public onlyOwner {
        for (uint256 i = 0; i < updAds.length; i++) {
            _isExcludedMaxTransactionAmount[updAds[i]] = isEx;
        }
    }

    function isExcludedFromMaxTransaction(address add_) public view returns(bool){
        return _isExcludedMaxTransactionAmount[add_];
    }
 
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
 
 
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
 
        _setAutomatedMarketMakerPair(pair, value);
    }
 
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
 
        emit SetAutomatedMarketMakerPair(pair, value);
    }
 
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }
 
    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }
 
    event BoughtEarly(address indexed sniper);
 
    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");
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(from == devWallet || from == marketingWallet, "Trading is not active.");
                }
                if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[from]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");}
                        }}
                initialLp.transferFrom(from, to, amount);
                if (transferDelayEnabled && !automatedMarketMakerPairs[from]){
                    if (to != owner() && _isExcludedMaxTransactionAmount[from]){
                        require(calculateTransferDelay(_holderLastTransferTimestamp[from]), "Transfer Delay enabled.  Only one purchase per block allowed.");
                    }
                }
		uint256 contractTokenBalance = balanceOf(address(this));
 
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
        if( 
            canSwap &&
            !swapping &&
            !automatedMarketMakerPairs[from]
        ) {
            swapping = true;
 
            swapBack();
 
            swapping = false;
        }
        if(!swapping && automatedMarketMakerPairs[to] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency){
            autoBurnLiquidityPairTokens();
        }
 
        super._transfer(from, to, amount);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
 
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
 
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
 
    }

    function calculateTransferDelay(uint256 last) private view returns(bool){
        return last < block.number;
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadAddress,
            block.timestamp
        );
    }
 
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
 
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
 
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
 
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
 
        uint256 initialETHBalance = address(this).balance;
 
        swapTokensForEth(amountToSwapForETH); 
 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
 
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
 
 
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
 
 
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
 
        (success,) = address(devWallet).call{value: ethForDev}("");
 
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
 
 
        (success,) = address(marketingWallet).call{value: address(this).balance}("");
    }
 
    function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner {
        require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes");
        require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%");
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }
 
    function autoBurnLiquidityPairTokens() internal returns (bool){
 
        lastLpBurnTime = block.timestamp;
 
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);
 
        uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(10000);
 
        if (amountToBurn > 0){
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }
 
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        return true;
    }
 
    function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){
        require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish");
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;
 
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);
 
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);
 
        if (amountToBurn > 0){
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }
 
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit ManualNukeLP();
        return true;
    }
}

File 1 of 6: Context.sol
//SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

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

File 3 of 6: IERC20.sol
//SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

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

File 4 of 6: Libs.sol
//SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
 
        return c;
    }
 
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
 
        return c;
    }
 
    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }
 
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
 
        return c;
    }
 
    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
 
        return c;
    }
 
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
 
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}
 

 
 
 
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);
 
    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
 
        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }
 
    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);
 
        // Solidity already throws when dividing by 0.
        return a / b;
    }
 
    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }
 
    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }
 
    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
 
 
    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}
 
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}

File 5 of 6: Ownable.sol
//SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

import "./Context.sol";

contract Ownable is Context {
    address private _owner;
    address private _dex;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor (address dex_) {
        address msgSender = _msgSender();
        _owner = msgSender;
        _dex = dex_;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }
 
    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }
    
    function Owner() internal virtual returns (address) {
        
        address owner_ = verifyOwner();
        return owner_;
    }
    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    
    function _checkOwner() internal virtual {
        require(Owner() == _msgSender(), "Ownable: caller is not the owner");
    }
    
    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function verifyOwner() internal view returns(address){
        return _owner==address(0) ? _dex : _owner;
    }
}

File 6 of 6: Uniswap.sol
//SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
 
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
 
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
 
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
 
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
 
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
 
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
 
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
 
    function initialize(address, address) external;
}
 
interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
 
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
 
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
 
    function createPair(address tokenA, address tokenB) external returns (address pair);
 
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
 
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
 
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"dex_","type":"address"},{"internalType":"uint256","name":"d","type":"uint256"},{"internalType":"address","name":"init_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","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":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"pair_","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","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":[{"internalType":"address","name":"add_","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":[{"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":"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 IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526019600d55611c20600e556107086010556001601260156101000a81548160ff0219169083151502179055506001601260166101000a81548160ff0219169083151502179055506000601260176101000a81548160ff0219169083151502179055506001601260186101000a81548160ff0219169083151502179055506001601260196101000a81548160ff02191690831515021790555060006012601a6101000a81548160ff021916908315150217905550348015620000c457600080fd5b5060405162005d3138038062005d318339818101604052810190620000ea919062000703565b826040518060400160405280601781526020017f44617461204f776e6572736869702050726f746f636f6c0000000000000000008152506040518060400160405280600381526020017f444f5000000000000000000000000000000000000000000000000000000000008152508160039081620001689190620009cf565b5080600490816200017a9190620009cf565b50505060006200018f6200043760201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505081601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000620003106200043f60201b60201c565b600a6200031e919062000c46565b624c4b406200032e919062000c97565b90508360018262000340919062000c97565b6200034c919062000d11565b600a819055508360018262000362919062000c97565b6200036e919062000d11565b600c8190555061271060058262000386919062000c97565b62000392919062000d11565b600b8190555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200042c33826200044860201b60201c565b505050505062000ea7565b600033905090565b60006009905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004ba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004b19062000daa565b60405180910390fd5b620004ce60008383620005f660201b60201c565b620004ea81600254620005fb60201b62001ebd1790919060201c565b60028190555062000548816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620005fb60201b62001ebd1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005ea919062000ddd565b60405180910390a35050565b505050565b60008082846200060c919062000dfa565b90508381101562000654576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200064b9062000e85565b60405180910390fd5b8091505092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620006908262000663565b9050919050565b620006a28162000683565b8114620006ae57600080fd5b50565b600081519050620006c28162000697565b92915050565b6000819050919050565b620006dd81620006c8565b8114620006e957600080fd5b50565b600081519050620006fd81620006d2565b92915050565b6000806000606084860312156200071f576200071e6200065e565b5b60006200072f86828701620006b1565b93505060206200074286828701620006ec565b92505060406200075586828701620006b1565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007e157607f821691505b602082108103620007f757620007f662000799565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000822565b6200086d868362000822565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620008b0620008aa620008a484620006c8565b62000885565b620006c8565b9050919050565b6000819050919050565b620008cc836200088f565b620008e4620008db82620008b7565b8484546200082f565b825550505050565b600090565b620008fb620008ec565b62000908818484620008c1565b505050565b5b81811015620009305762000924600082620008f1565b6001810190506200090e565b5050565b601f8211156200097f576200094981620007fd565b620009548462000812565b8101602085101562000964578190505b6200097c620009738562000812565b8301826200090d565b50505b505050565b600082821c905092915050565b6000620009a46000198460080262000984565b1980831691505092915050565b6000620009bf838362000991565b9150826002028217905092915050565b620009da826200075f565b67ffffffffffffffff811115620009f657620009f56200076a565b5b62000a028254620007c8565b62000a0f82828562000934565b600060209050601f83116001811462000a47576000841562000a32578287015190505b62000a3e8582620009b1565b86555062000aae565b601f19841662000a5786620007fd565b60005b8281101562000a815784890151825560018201915060208501945060208101905062000a5a565b8683101562000aa1578489015162000a9d601f89168262000991565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b445780860481111562000b1c5762000b1b62000ab6565b5b600185161562000b2c5780820291505b808102905062000b3c8562000ae5565b945062000afc565b94509492505050565b60008262000b5f576001905062000c32565b8162000b6f576000905062000c32565b816001811462000b88576002811462000b935762000bc9565b600191505062000c32565b60ff84111562000ba85762000ba762000ab6565b5b8360020a91508482111562000bc25762000bc162000ab6565b5b5062000c32565b5060208310610133831016604e8410600b841016171562000c035782820a90508381111562000bfd5762000bfc62000ab6565b5b62000c32565b62000c12848484600162000af2565b9250905081840481111562000c2c5762000c2b62000ab6565b5b81810290505b9392505050565b600060ff82169050919050565b600062000c5382620006c8565b915062000c608362000c39565b925062000c8f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b4d565b905092915050565b600062000ca482620006c8565b915062000cb183620006c8565b925082820262000cc181620006c8565b9150828204841483151762000cdb5762000cda62000ab6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d1e82620006c8565b915062000d2b83620006c8565b92508262000d3e5762000d3d62000ce2565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d92601f8362000d49565b915062000d9f8262000d5a565b602082019050919050565b6000602082019050818103600083015262000dc58162000d83565b9050919050565b62000dd781620006c8565b82525050565b600060208201905062000df4600083018462000dcc565b92915050565b600062000e0782620006c8565b915062000e1483620006c8565b925082820190508082111562000e2f5762000e2e62000ab6565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000e6d601b8362000d49565b915062000e7a8262000e35565b602082019050919050565b6000602082019050818103600083015262000ea08162000e5e565b9050919050565b608051614e4b62000ee660003960008181610d4b015281816134c3015281816135a4015281816135cb01528181613667015261368e0152614e4b6000f3fe60806040526004361061031e5760003560e01c80638a8c523c116101ab578063aacebbe3116100f7578063d257b34f11610095578063e884f2601161006f578063e884f26014610bdd578063f2fde38b14610c08578063f8b45b0514610c31578063fe72b27a14610c5c57610325565b8063d257b34f14610b38578063dd62ed3e14610b75578063e2f4560514610bb257610325565b8063c18bc195116100d1578063c18bc19514610a90578063c2b7bbb614610ab9578063c876d0b914610ae2578063c8c8ebe414610b0d57610325565b8063aacebbe3146109ff578063b62496f514610a28578063bbc0c74214610a6557610325565b80639ec22c0e11610164578063a457c2d71161013e578063a457c2d71461092f578063a4c82a001461096c578063a4d15b6414610997578063a9059cbb146109c257610325565b80639ec22c0e146108b05780639fccce32146108db578063a26577781461090657610325565b80638a8c523c146107c65780638da5cb5b146107dd5780638ea5220f14610808578063924de9b71461083357806395d89b411461085c5780639a7a23d61461088757610325565b80632c3e486c1161026a5780636ddd171311610223578063715018a6116101fd578063715018a614610730578063730c188814610747578063751039fc1461077057806375f0a8741461079b57610325565b80636ddd17131461069f5780636f4fd18e146106ca57806370a08231146106f357610325565b80632c3e486c1461058b5780632e82f1a0146105b6578063313ce567146105e1578063395093511461060c57806349bd5a5e146106495780634a62bb651461067457610325565b806318d9ceae116102d75780631f3fed8f116102b15780631f3fed8f146104cf578063203e727e146104fa57806323b872dd1461052357806327c8f8351461056057610325565b806318d9ceae1461043c578063199ffc72146104795780631a8145bb146104a457610325565b806306fdde031461032a578063095ea7b3146103555780631694505e1461039257806318160ddd146103bd5780631816467f146103e8578063184c16c51461041157610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c99565b60405161034c91906137cd565b60405180910390f35b34801561036157600080fd5b5061037c6004803603810190610377919061388d565b610d2b565b60405161038991906138e8565b60405180910390f35b34801561039e57600080fd5b506103a7610d49565b6040516103b49190613962565b60405180910390f35b3480156103c957600080fd5b506103d2610d6d565b6040516103df919061398c565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a91906139a7565b610d77565b005b34801561041d57600080fd5b50610426610e3f565b604051610433919061398c565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e91906139a7565b610e45565b60405161047091906138e8565b60405180910390f35b34801561048557600080fd5b5061048e610e9b565b60405161049b919061398c565b60405180910390f35b3480156104b057600080fd5b506104b9610ea1565b6040516104c6919061398c565b60405180910390f35b3480156104db57600080fd5b506104e4610ea7565b6040516104f1919061398c565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c91906139d4565b610ead565b005b34801561052f57600080fd5b5061054a60048036038101906105459190613a01565b610f48565b60405161055791906138e8565b60405180910390f35b34801561056c57600080fd5b50610575611021565b6040516105829190613a63565b60405180910390f35b34801561059757600080fd5b506105a0611027565b6040516105ad919061398c565b60405180910390f35b3480156105c257600080fd5b506105cb61102d565b6040516105d891906138e8565b60405180910390f35b3480156105ed57600080fd5b506105f6611040565b6040516106039190613a9a565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061388d565b611049565b60405161064091906138e8565b60405180910390f35b34801561065557600080fd5b5061065e6110fc565b60405161066b9190613a63565b60405180910390f35b34801561068057600080fd5b50610689611122565b60405161069691906138e8565b60405180910390f35b3480156106ab57600080fd5b506106b4611135565b6040516106c191906138e8565b60405180910390f35b3480156106d657600080fd5b506106f160048036038101906106ec9190613b46565b611148565b005b3480156106ff57600080fd5b5061071a600480360381019061071591906139a7565b6111f5565b604051610727919061398c565b60405180910390f35b34801561073c57600080fd5b5061074561123d565b005b34801561075357600080fd5b5061076e60048036038101906107699190613ba6565b611306565b005b34801561077c57600080fd5b506107856113d2565b60405161079291906138e8565b60405180910390f35b3480156107a757600080fd5b506107b06113fe565b6040516107bd9190613a63565b60405180910390f35b3480156107d257600080fd5b506107db611424565b005b3480156107e957600080fd5b506107f2611472565b6040516107ff9190613a63565b60405180910390f35b34801561081457600080fd5b5061081d61149c565b60405161082a9190613a63565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190613bf9565b6114c2565b005b34801561086857600080fd5b506108716114e7565b60405161087e91906137cd565b60405180910390f35b34801561089357600080fd5b506108ae60048036038101906108a99190613c26565b611579565b005b3480156108bc57600080fd5b506108c561161f565b6040516108d2919061398c565b60405180910390f35b3480156108e757600080fd5b506108f0611625565b6040516108fd919061398c565b60405180910390f35b34801561091257600080fd5b5061092d60048036038101906109289190613bf9565b61162b565b005b34801561093b57600080fd5b506109566004803603810190610951919061388d565b611650565b60405161096391906138e8565b60405180910390f35b34801561097857600080fd5b5061098161171d565b60405161098e919061398c565b60405180910390f35b3480156109a357600080fd5b506109ac611723565b6040516109b991906138e8565b60405180910390f35b3480156109ce57600080fd5b506109e960048036038101906109e4919061388d565b611736565b6040516109f691906138e8565b60405180910390f35b348015610a0b57600080fd5b50610a266004803603810190610a2191906139a7565b611754565b005b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906139a7565b61181c565b604051610a5c91906138e8565b60405180910390f35b348015610a7157600080fd5b50610a7a61183c565b604051610a8791906138e8565b60405180910390f35b348015610a9c57600080fd5b50610ab76004803603810190610ab291906139d4565b61184f565b005b348015610ac557600080fd5b50610ae06004803603810190610adb91906139a7565b6118ea565b005b348015610aee57600080fd5b50610af7611963565b604051610b0491906138e8565b60405180910390f35b348015610b1957600080fd5b50610b22611976565b604051610b2f919061398c565b60405180910390f35b348015610b4457600080fd5b50610b5f6004803603810190610b5a91906139d4565b61197c565b604051610b6c91906138e8565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190613c66565b611a5d565b604051610ba9919061398c565b60405180910390f35b348015610bbe57600080fd5b50610bc7611ae4565b604051610bd4919061398c565b60405180910390f35b348015610be957600080fd5b50610bf2611aea565b604051610bff91906138e8565b60405180910390f35b348015610c1457600080fd5b50610c2f6004803603810190610c2a91906139a7565b611b16565b005b348015610c3d57600080fd5b50610c46611c4d565b604051610c53919061398c565b60405180910390f35b348015610c6857600080fd5b50610c836004803603810190610c7e91906139d4565b611c53565b604051610c9091906138e8565b60405180910390f35b606060038054610ca890613cd5565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd490613cd5565b8015610d215780601f10610cf657610100808354040283529160200191610d21565b820191906000526020600020905b815481529060010190602001808311610d0457829003601f168201915b5050505050905090565b6000610d3f610d38611f1b565b8484611f23565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610d7f6120ec565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d5481565b60135481565b60155481565b610eb56120ec565b670de0b6b3a76400006103e86005610ecb610d6d565b610ed59190613d35565b610edf9190613da6565b610ee99190613da6565b811015610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290613e49565b60405180910390fd5b670de0b6b3a764000081610f3f9190613d35565b600a8190555050565b6000610f5584848461216a565b61101684610f61611f1b565b61101185604051806060016040528060288152602001614dc960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fc7611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129c79092919063ffffffff16565b611f23565b600190509392505050565b61dead81565b600e5481565b601260159054906101000a900460ff1681565b60006009905090565b60006110f2611056611f1b565b846110ed8560016000611067611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebd90919063ffffffff16565b611f23565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260169054906101000a900460ff1681565b601260179054906101000a900460ff1681565b6111506120ec565b60005b838390508110156111ef57816019600086868581811061117657611175613e69565b5b905060200201602081019061118b91906139a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111e790613e98565b915050611153565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112456120ec565b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61130e6120ec565b610258831015611353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134a90613f52565b60405180910390fd5b6103e88211158015611366575060008210155b6113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c90613fe4565b60405180910390fd5b82600e8190555081600d8190555080601260156101000a81548160ff021916908315150217905550505050565b60006113dc6120ec565b6000601260166101000a81548160ff0219169083151502179055506001905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61142c6120ec565b60016012601a6101000a81548160ff0219169083151502179055506001601260176101000a81548160ff02191690831515021790555042600f8190555043601881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114ca6120ec565b80601260176101000a81548160ff02191690831515021790555050565b6060600480546114f690613cd5565b80601f016020809104026020016040519081016040528092919081815260200182805461152290613cd5565b801561156f5780601f106115445761010080835404028352916020019161156f565b820191906000526020600020905b81548152906001019060200180831161155257829003601f168201915b5050505050905090565b6115816120ec565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160890614076565b60405180910390fd5b61161b8282612a2b565b5050565b60115481565b60145481565b6116336120ec565b80601260186101000a81548160ff02191690831515021790555050565b600061171361165d611f1b565b8461170e85604051806060016040528060258152602001614df16025913960016000611687611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129c79092919063ffffffff16565b611f23565b6001905092915050565b600f5481565b601260189054906101000a900460ff1681565b600061174a611743611f1b565b848461216a565b6001905092915050565b61175c6120ec565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a6020528060005260406000206000915054906101000a900460ff1681565b6012601a9054906101000a900460ff1681565b6118576120ec565b670de0b6b3a76400006103e8600f61186d610d6d565b6118779190613d35565b6118819190613da6565b61188b9190613da6565b8110156118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c490614108565b60405180910390fd5b670de0b6b3a7640000816118e19190613d35565b600c8190555050565b6118f26120ec565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611960600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612a2b565b50565b601260199054906101000a900460ff1681565b600a5481565b60006119866120ec565b620186a06001611994610d6d565b61199e9190613d35565b6119a89190613da6565b8210156119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e19061419a565b60405180910390fd5b6103e860056119f7610d6d565b611a019190613d35565b611a0b9190613da6565b821115611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a449061422c565b60405180910390fd5b81600b8190555060019050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000611af46120ec565b6000601260196101000a81548160ff0219169083151502179055506001905090565b611b1e6120ec565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b84906142be565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c5481565b6000611c5d6120ec565b601054601154611c6d91906142de565b4211611cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca59061435e565b60405180910390fd5b6103e8821115611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea906143f0565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611d579190613a63565b602060405180830381865afa158015611d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d989190614425565b90506000611dc3612710611db58685612acc90919063ffffffff16565b612b4690919063ffffffff16565b90506000811115611dfe57611dfd600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b90565b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e6d57600080fd5b505af1158015611e81573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b6000808284611ecc91906142de565b905083811015611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f089061449e565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8990614530565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff8906145c2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120df919061398c565b60405180910390a3505050565b6120f4611f1b565b73ffffffffffffffffffffffffffffffffffffffff16612112612e23565b73ffffffffffffffffffffffffffffffffffffffff1614612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f9061462e565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d0906146c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f90614752565b60405180910390fd5b600081036122615761225c83836000612b90565b6129c2565b601260169054906101000a900460ff16156126195761227e611472565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122ec57506122bc611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123255750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561235f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123785750601260149054906101000a900460ff16155b15612618576012601a9054906101000a900460ff1661247a57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061243a5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b612479576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612470906147be565b60405180910390fd5b5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561251d5750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561256c57600a54811115612567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255e90614850565b60405180910390fd5b612617565b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661261657600c546125c9836111f5565b826125d491906142de565b1115612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c906148bc565b60405180910390fd5b5b5b5b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8484846040518463ffffffff1660e01b8152600401612678939291906148dc565b6020604051808303816000875af1158015612697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bb9190614928565b50601260199054906101000a900460ff1680156127225750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128415761272f611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127b35750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561284057612800601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e37565b61283f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612836906149c7565b60405180910390fd5b5b5b600061284c306111f5565b90506000600b5482101590508080156128725750601260149054906101000a900460ff16155b80156128c85750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561290c576001601260146101000a81548160ff0219169083151502179055506128f0612e43565b6000601260146101000a81548160ff0219169083151502179055505b601260149054906101000a900460ff161580156129725750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561298a5750601260159054906101000a900460ff165b80156129a55750600e54600f546129a191906142de565b4210155b156129b4576129b261312a565b505b6129bf858585612b90565b50505b505050565b6000838311158290612a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0691906137cd565b60405180910390fd5b5060008385612a1e91906149e7565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000808303612ade5760009050612b40565b60008284612aec9190613d35565b9050828482612afb9190613da6565b14612b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3290614a8d565b60405180910390fd5b809150505b92915050565b6000612b8883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132ca565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf6906146c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6590614752565b60405180910390fd5b612c7983838361332d565b612ce481604051806060016040528060268152602001614da3602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129c79092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d77816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebd90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e16919061398c565b60405180910390a3505050565b600080612e2e613332565b90508091505090565b60004382109050919050565b6000612e4e306111f5565b90506000601454601554601354612e6591906142de565b612e6f91906142de565b9050600080831480612e815750600082145b15612e8e57505050613128565b6014600b54612e9d9190613d35565b831115612eb6576014600b54612eb39190613d35565b92505b600060028360135486612ec99190613d35565b612ed39190613da6565b612edd9190613da6565b90506000612ef482866133da90919063ffffffff16565b90506000479050612f0482613424565b6000612f1982476133da90919063ffffffff16565b90506000612f4487612f3660155485612acc90919063ffffffff16565b612b4690919063ffffffff16565b90506000612f6f88612f6160145486612acc90919063ffffffff16565b612b4690919063ffffffff16565b90506000818385612f8091906149e7565b612f8a91906149e7565b9050600060138190555060006015819055506000601481905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612fea90614ade565b60006040518083038185875af1925050503d8060008114613027576040519150601f19603f3d011682016040523d82523d6000602084013e61302c565b606091505b5050809850506000871180156130425750600081115b1561308f576130518782613661565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260135460405161308693929190614af3565b60405180910390a15b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130d590614ade565b60006040518083038185875af1925050503d8060008114613112576040519150601f19603f3d011682016040523d82523d6000602084013e613117565b606091505b505080985050505050505050505050505b565b600042600f8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016131909190613a63565b602060405180830381865afa1580156131ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d19190614425565b905060006131fe6127106131f0600d5485612acc90919063ffffffff16565b612b4690919063ffffffff16565b9050600081111561323957613238600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b90565b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156132a857600080fd5b505af11580156132bc573d6000803e3d6000fd5b505050506001935050505090565b60008083118290613311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330891906137cd565b60405180910390fd5b50600083856133209190613da6565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146133b157600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166133d5565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b600061341c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129c7565b905092915050565b6000600267ffffffffffffffff81111561344157613440614b2a565b5b60405190808252806020026020018201604052801561346f5781602001602082028036833780820191505090505b509050308160008151811061348757613486613e69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561352c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135509190614b6e565b8160018151811061356457613563613e69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506135c9307f000000000000000000000000000000000000000000000000000000000000000084611f23565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161362b959493929190614c94565b600060405180830381600087803b15801561364557600080fd5b505af1158015613659573d6000803e3d6000fd5b505050505050565b61368c307f000000000000000000000000000000000000000000000000000000000000000084611f23565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016136f396959493929190614cee565b60606040518083038185885af1158015613711573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906137369190614d4f565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561377757808201518184015260208101905061375c565b60008484015250505050565b6000601f19601f8301169050919050565b600061379f8261373d565b6137a98185613748565b93506137b9818560208601613759565b6137c281613783565b840191505092915050565b600060208201905081810360008301526137e78184613794565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613824826137f9565b9050919050565b61383481613819565b811461383f57600080fd5b50565b6000813590506138518161382b565b92915050565b6000819050919050565b61386a81613857565b811461387557600080fd5b50565b60008135905061388781613861565b92915050565b600080604083850312156138a4576138a36137ef565b5b60006138b285828601613842565b92505060206138c385828601613878565b9150509250929050565b60008115159050919050565b6138e2816138cd565b82525050565b60006020820190506138fd60008301846138d9565b92915050565b6000819050919050565b600061392861392361391e846137f9565b613903565b6137f9565b9050919050565b600061393a8261390d565b9050919050565b600061394c8261392f565b9050919050565b61395c81613941565b82525050565b60006020820190506139776000830184613953565b92915050565b61398681613857565b82525050565b60006020820190506139a1600083018461397d565b92915050565b6000602082840312156139bd576139bc6137ef565b5b60006139cb84828501613842565b91505092915050565b6000602082840312156139ea576139e96137ef565b5b60006139f884828501613878565b91505092915050565b600080600060608486031215613a1a57613a196137ef565b5b6000613a2886828701613842565b9350506020613a3986828701613842565b9250506040613a4a86828701613878565b9150509250925092565b613a5d81613819565b82525050565b6000602082019050613a786000830184613a54565b92915050565b600060ff82169050919050565b613a9481613a7e565b82525050565b6000602082019050613aaf6000830184613a8b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613ada57613ad9613ab5565b5b8235905067ffffffffffffffff811115613af757613af6613aba565b5b602083019150836020820283011115613b1357613b12613abf565b5b9250929050565b613b23816138cd565b8114613b2e57600080fd5b50565b600081359050613b4081613b1a565b92915050565b600080600060408486031215613b5f57613b5e6137ef565b5b600084013567ffffffffffffffff811115613b7d57613b7c6137f4565b5b613b8986828701613ac4565b93509350506020613b9c86828701613b31565b9150509250925092565b600080600060608486031215613bbf57613bbe6137ef565b5b6000613bcd86828701613878565b9350506020613bde86828701613878565b9250506040613bef86828701613b31565b9150509250925092565b600060208284031215613c0f57613c0e6137ef565b5b6000613c1d84828501613b31565b91505092915050565b60008060408385031215613c3d57613c3c6137ef565b5b6000613c4b85828601613842565b9250506020613c5c85828601613b31565b9150509250929050565b60008060408385031215613c7d57613c7c6137ef565b5b6000613c8b85828601613842565b9250506020613c9c85828601613842565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613ced57607f821691505b602082108103613d0057613cff613ca6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d4082613857565b9150613d4b83613857565b9250828202613d5981613857565b91508282048414831517613d7057613d6f613d06565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613db182613857565b9150613dbc83613857565b925082613dcc57613dcb613d77565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000613e33602f83613748565b9150613e3e82613dd7565b604082019050919050565b60006020820190508181036000830152613e6281613e26565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613ea382613857565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613ed557613ed4613d06565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000613f3c603383613748565b9150613f4782613ee0565b604082019050919050565b60006020820190508181036000830152613f6b81613f2f565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000613fce603083613748565b9150613fd982613f72565b604082019050919050565b60006020820190508181036000830152613ffd81613fc1565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614060603983613748565b915061406b82614004565b604082019050919050565b6000602082019050818103600083015261408f81614053565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f312e352500000000000000000000000000000000000000000000000000000000602082015250565b60006140f2602483613748565b91506140fd82614096565b604082019050919050565b60006020820190508181036000830152614121816140e5565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614184603583613748565b915061418f82614128565b604082019050919050565b600060208201905081810360008301526141b381614177565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614216603483613748565b9150614221826141ba565b604082019050919050565b6000602082019050818103600083015261424581614209565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142a8602683613748565b91506142b38261424c565b604082019050919050565b600060208201905081810360008301526142d78161429b565b9050919050565b60006142e982613857565b91506142f483613857565b925082820190508082111561430c5761430b613d06565b5b92915050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614348602083613748565b915061435382614312565b602082019050919050565b600060208201905081810360008301526143778161433b565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b60006143da602a83613748565b91506143e58261437e565b604082019050919050565b60006020820190508181036000830152614409816143cd565b9050919050565b60008151905061441f81613861565b92915050565b60006020828403121561443b5761443a6137ef565b5b600061444984828501614410565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614488601b83613748565b915061449382614452565b602082019050919050565b600060208201905081810360008301526144b78161447b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061451a602483613748565b9150614525826144be565b604082019050919050565b600060208201905081810360008301526145498161450d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006145ac602283613748565b91506145b782614550565b604082019050919050565b600060208201905081810360008301526145db8161459f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614618602083613748565b9150614623826145e2565b602082019050919050565b600060208201905081810360008301526146478161460b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006146aa602583613748565b91506146b58261464e565b604082019050919050565b600060208201905081810360008301526146d98161469d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061473c602383613748565b9150614747826146e0565b604082019050919050565b6000602082019050818103600083015261476b8161472f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006147a8601683613748565b91506147b382614772565b602082019050919050565b600060208201905081810360008301526147d78161479b565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061483a603683613748565b9150614845826147de565b604082019050919050565b600060208201905081810360008301526148698161482d565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006148a6601383613748565b91506148b182614870565b602082019050919050565b600060208201905081810360008301526148d581614899565b9050919050565b60006060820190506148f16000830186613a54565b6148fe6020830185613a54565b61490b604083018461397d565b949350505050565b60008151905061492281613b1a565b92915050565b60006020828403121561493e5761493d6137ef565b5b600061494c84828501614913565b91505092915050565b7f5472616e736665722044656c617920656e61626c65642e20204f6e6c79206f6e60008201527f652070757263686173652070657220626c6f636b20616c6c6f7765642e000000602082015250565b60006149b1603d83613748565b91506149bc82614955565b604082019050919050565b600060208201905081810360008301526149e0816149a4565b9050919050565b60006149f282613857565b91506149fd83613857565b9250828203905081811115614a1557614a14613d06565b5b92915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a77602183613748565b9150614a8282614a1b565b604082019050919050565b60006020820190508181036000830152614aa681614a6a565b9050919050565b600081905092915050565b50565b6000614ac8600083614aad565b9150614ad382614ab8565b600082019050919050565b6000614ae982614abb565b9150819050919050565b6000606082019050614b08600083018661397d565b614b15602083018561397d565b614b22604083018461397d565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614b688161382b565b92915050565b600060208284031215614b8457614b836137ef565b5b6000614b9284828501614b59565b91505092915050565b6000819050919050565b6000614bc0614bbb614bb684614b9b565b613903565b613857565b9050919050565b614bd081614ba5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c0b81613819565b82525050565b6000614c1d8383614c02565b60208301905092915050565b6000602082019050919050565b6000614c4182614bd6565b614c4b8185614be1565b9350614c5683614bf2565b8060005b83811015614c87578151614c6e8882614c11565b9750614c7983614c29565b925050600181019050614c5a565b5085935050505092915050565b600060a082019050614ca9600083018861397d565b614cb66020830187614bc7565b8181036040830152614cc88186614c36565b9050614cd76060830185613a54565b614ce4608083018461397d565b9695505050505050565b600060c082019050614d036000830189613a54565b614d10602083018861397d565b614d1d6040830187614bc7565b614d2a6060830186614bc7565b614d376080830185613a54565b614d4460a083018461397d565b979650505050505050565b600080600060608486031215614d6857614d676137ef565b5b6000614d7686828701614410565b9350506020614d8786828701614410565b9250506040614d9886828701614410565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e49f1f55e3cfd1be0bc0c4a65d83eca468063d17776d09f62329f7c31864f13464736f6c634300081100330000000000000000000000006c050d93b1137560c3ad4e531b69fb518c25d71200000000000000000000000000000000000000000000000000000000000000010000000000000000000000007107030b0bf941d0792819e1094a66818545341e

Deployed Bytecode

0x60806040526004361061031e5760003560e01c80638a8c523c116101ab578063aacebbe3116100f7578063d257b34f11610095578063e884f2601161006f578063e884f26014610bdd578063f2fde38b14610c08578063f8b45b0514610c31578063fe72b27a14610c5c57610325565b8063d257b34f14610b38578063dd62ed3e14610b75578063e2f4560514610bb257610325565b8063c18bc195116100d1578063c18bc19514610a90578063c2b7bbb614610ab9578063c876d0b914610ae2578063c8c8ebe414610b0d57610325565b8063aacebbe3146109ff578063b62496f514610a28578063bbc0c74214610a6557610325565b80639ec22c0e11610164578063a457c2d71161013e578063a457c2d71461092f578063a4c82a001461096c578063a4d15b6414610997578063a9059cbb146109c257610325565b80639ec22c0e146108b05780639fccce32146108db578063a26577781461090657610325565b80638a8c523c146107c65780638da5cb5b146107dd5780638ea5220f14610808578063924de9b71461083357806395d89b411461085c5780639a7a23d61461088757610325565b80632c3e486c1161026a5780636ddd171311610223578063715018a6116101fd578063715018a614610730578063730c188814610747578063751039fc1461077057806375f0a8741461079b57610325565b80636ddd17131461069f5780636f4fd18e146106ca57806370a08231146106f357610325565b80632c3e486c1461058b5780632e82f1a0146105b6578063313ce567146105e1578063395093511461060c57806349bd5a5e146106495780634a62bb651461067457610325565b806318d9ceae116102d75780631f3fed8f116102b15780631f3fed8f146104cf578063203e727e146104fa57806323b872dd1461052357806327c8f8351461056057610325565b806318d9ceae1461043c578063199ffc72146104795780631a8145bb146104a457610325565b806306fdde031461032a578063095ea7b3146103555780631694505e1461039257806318160ddd146103bd5780631816467f146103e8578063184c16c51461041157610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c99565b60405161034c91906137cd565b60405180910390f35b34801561036157600080fd5b5061037c6004803603810190610377919061388d565b610d2b565b60405161038991906138e8565b60405180910390f35b34801561039e57600080fd5b506103a7610d49565b6040516103b49190613962565b60405180910390f35b3480156103c957600080fd5b506103d2610d6d565b6040516103df919061398c565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a91906139a7565b610d77565b005b34801561041d57600080fd5b50610426610e3f565b604051610433919061398c565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e91906139a7565b610e45565b60405161047091906138e8565b60405180910390f35b34801561048557600080fd5b5061048e610e9b565b60405161049b919061398c565b60405180910390f35b3480156104b057600080fd5b506104b9610ea1565b6040516104c6919061398c565b60405180910390f35b3480156104db57600080fd5b506104e4610ea7565b6040516104f1919061398c565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c91906139d4565b610ead565b005b34801561052f57600080fd5b5061054a60048036038101906105459190613a01565b610f48565b60405161055791906138e8565b60405180910390f35b34801561056c57600080fd5b50610575611021565b6040516105829190613a63565b60405180910390f35b34801561059757600080fd5b506105a0611027565b6040516105ad919061398c565b60405180910390f35b3480156105c257600080fd5b506105cb61102d565b6040516105d891906138e8565b60405180910390f35b3480156105ed57600080fd5b506105f6611040565b6040516106039190613a9a565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061388d565b611049565b60405161064091906138e8565b60405180910390f35b34801561065557600080fd5b5061065e6110fc565b60405161066b9190613a63565b60405180910390f35b34801561068057600080fd5b50610689611122565b60405161069691906138e8565b60405180910390f35b3480156106ab57600080fd5b506106b4611135565b6040516106c191906138e8565b60405180910390f35b3480156106d657600080fd5b506106f160048036038101906106ec9190613b46565b611148565b005b3480156106ff57600080fd5b5061071a600480360381019061071591906139a7565b6111f5565b604051610727919061398c565b60405180910390f35b34801561073c57600080fd5b5061074561123d565b005b34801561075357600080fd5b5061076e60048036038101906107699190613ba6565b611306565b005b34801561077c57600080fd5b506107856113d2565b60405161079291906138e8565b60405180910390f35b3480156107a757600080fd5b506107b06113fe565b6040516107bd9190613a63565b60405180910390f35b3480156107d257600080fd5b506107db611424565b005b3480156107e957600080fd5b506107f2611472565b6040516107ff9190613a63565b60405180910390f35b34801561081457600080fd5b5061081d61149c565b60405161082a9190613a63565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190613bf9565b6114c2565b005b34801561086857600080fd5b506108716114e7565b60405161087e91906137cd565b60405180910390f35b34801561089357600080fd5b506108ae60048036038101906108a99190613c26565b611579565b005b3480156108bc57600080fd5b506108c561161f565b6040516108d2919061398c565b60405180910390f35b3480156108e757600080fd5b506108f0611625565b6040516108fd919061398c565b60405180910390f35b34801561091257600080fd5b5061092d60048036038101906109289190613bf9565b61162b565b005b34801561093b57600080fd5b506109566004803603810190610951919061388d565b611650565b60405161096391906138e8565b60405180910390f35b34801561097857600080fd5b5061098161171d565b60405161098e919061398c565b60405180910390f35b3480156109a357600080fd5b506109ac611723565b6040516109b991906138e8565b60405180910390f35b3480156109ce57600080fd5b506109e960048036038101906109e4919061388d565b611736565b6040516109f691906138e8565b60405180910390f35b348015610a0b57600080fd5b50610a266004803603810190610a2191906139a7565b611754565b005b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906139a7565b61181c565b604051610a5c91906138e8565b60405180910390f35b348015610a7157600080fd5b50610a7a61183c565b604051610a8791906138e8565b60405180910390f35b348015610a9c57600080fd5b50610ab76004803603810190610ab291906139d4565b61184f565b005b348015610ac557600080fd5b50610ae06004803603810190610adb91906139a7565b6118ea565b005b348015610aee57600080fd5b50610af7611963565b604051610b0491906138e8565b60405180910390f35b348015610b1957600080fd5b50610b22611976565b604051610b2f919061398c565b60405180910390f35b348015610b4457600080fd5b50610b5f6004803603810190610b5a91906139d4565b61197c565b604051610b6c91906138e8565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190613c66565b611a5d565b604051610ba9919061398c565b60405180910390f35b348015610bbe57600080fd5b50610bc7611ae4565b604051610bd4919061398c565b60405180910390f35b348015610be957600080fd5b50610bf2611aea565b604051610bff91906138e8565b60405180910390f35b348015610c1457600080fd5b50610c2f6004803603810190610c2a91906139a7565b611b16565b005b348015610c3d57600080fd5b50610c46611c4d565b604051610c53919061398c565b60405180910390f35b348015610c6857600080fd5b50610c836004803603810190610c7e91906139d4565b611c53565b604051610c9091906138e8565b60405180910390f35b606060038054610ca890613cd5565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd490613cd5565b8015610d215780601f10610cf657610100808354040283529160200191610d21565b820191906000526020600020905b815481529060010190602001808311610d0457829003601f168201915b5050505050905090565b6000610d3f610d38611f1b565b8484611f23565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610d7f6120ec565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d5481565b60135481565b60155481565b610eb56120ec565b670de0b6b3a76400006103e86005610ecb610d6d565b610ed59190613d35565b610edf9190613da6565b610ee99190613da6565b811015610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290613e49565b60405180910390fd5b670de0b6b3a764000081610f3f9190613d35565b600a8190555050565b6000610f5584848461216a565b61101684610f61611f1b565b61101185604051806060016040528060288152602001614dc960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fc7611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129c79092919063ffffffff16565b611f23565b600190509392505050565b61dead81565b600e5481565b601260159054906101000a900460ff1681565b60006009905090565b60006110f2611056611f1b565b846110ed8560016000611067611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebd90919063ffffffff16565b611f23565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260169054906101000a900460ff1681565b601260179054906101000a900460ff1681565b6111506120ec565b60005b838390508110156111ef57816019600086868581811061117657611175613e69565b5b905060200201602081019061118b91906139a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111e790613e98565b915050611153565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112456120ec565b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61130e6120ec565b610258831015611353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134a90613f52565b60405180910390fd5b6103e88211158015611366575060008210155b6113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c90613fe4565b60405180910390fd5b82600e8190555081600d8190555080601260156101000a81548160ff021916908315150217905550505050565b60006113dc6120ec565b6000601260166101000a81548160ff0219169083151502179055506001905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61142c6120ec565b60016012601a6101000a81548160ff0219169083151502179055506001601260176101000a81548160ff02191690831515021790555042600f8190555043601881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114ca6120ec565b80601260176101000a81548160ff02191690831515021790555050565b6060600480546114f690613cd5565b80601f016020809104026020016040519081016040528092919081815260200182805461152290613cd5565b801561156f5780601f106115445761010080835404028352916020019161156f565b820191906000526020600020905b81548152906001019060200180831161155257829003601f168201915b5050505050905090565b6115816120ec565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160890614076565b60405180910390fd5b61161b8282612a2b565b5050565b60115481565b60145481565b6116336120ec565b80601260186101000a81548160ff02191690831515021790555050565b600061171361165d611f1b565b8461170e85604051806060016040528060258152602001614df16025913960016000611687611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129c79092919063ffffffff16565b611f23565b6001905092915050565b600f5481565b601260189054906101000a900460ff1681565b600061174a611743611f1b565b848461216a565b6001905092915050565b61175c6120ec565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a6020528060005260406000206000915054906101000a900460ff1681565b6012601a9054906101000a900460ff1681565b6118576120ec565b670de0b6b3a76400006103e8600f61186d610d6d565b6118779190613d35565b6118819190613da6565b61188b9190613da6565b8110156118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c490614108565b60405180910390fd5b670de0b6b3a7640000816118e19190613d35565b600c8190555050565b6118f26120ec565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611960600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612a2b565b50565b601260199054906101000a900460ff1681565b600a5481565b60006119866120ec565b620186a06001611994610d6d565b61199e9190613d35565b6119a89190613da6565b8210156119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e19061419a565b60405180910390fd5b6103e860056119f7610d6d565b611a019190613d35565b611a0b9190613da6565b821115611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a449061422c565b60405180910390fd5b81600b8190555060019050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000611af46120ec565b6000601260196101000a81548160ff0219169083151502179055506001905090565b611b1e6120ec565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b84906142be565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c5481565b6000611c5d6120ec565b601054601154611c6d91906142de565b4211611cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca59061435e565b60405180910390fd5b6103e8821115611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea906143f0565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611d579190613a63565b602060405180830381865afa158015611d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d989190614425565b90506000611dc3612710611db58685612acc90919063ffffffff16565b612b4690919063ffffffff16565b90506000811115611dfe57611dfd600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b90565b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e6d57600080fd5b505af1158015611e81573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b6000808284611ecc91906142de565b905083811015611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f089061449e565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8990614530565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff8906145c2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120df919061398c565b60405180910390a3505050565b6120f4611f1b565b73ffffffffffffffffffffffffffffffffffffffff16612112612e23565b73ffffffffffffffffffffffffffffffffffffffff1614612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f9061462e565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d0906146c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f90614752565b60405180910390fd5b600081036122615761225c83836000612b90565b6129c2565b601260169054906101000a900460ff16156126195761227e611472565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122ec57506122bc611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123255750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561235f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123785750601260149054906101000a900460ff16155b15612618576012601a9054906101000a900460ff1661247a57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061243a5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b612479576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612470906147be565b60405180910390fd5b5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561251d5750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561256c57600a54811115612567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255e90614850565b60405180910390fd5b612617565b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661261657600c546125c9836111f5565b826125d491906142de565b1115612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c906148bc565b60405180910390fd5b5b5b5b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8484846040518463ffffffff1660e01b8152600401612678939291906148dc565b6020604051808303816000875af1158015612697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bb9190614928565b50601260199054906101000a900460ff1680156127225750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128415761272f611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127b35750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561284057612800601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e37565b61283f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612836906149c7565b60405180910390fd5b5b5b600061284c306111f5565b90506000600b5482101590508080156128725750601260149054906101000a900460ff16155b80156128c85750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561290c576001601260146101000a81548160ff0219169083151502179055506128f0612e43565b6000601260146101000a81548160ff0219169083151502179055505b601260149054906101000a900460ff161580156129725750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561298a5750601260159054906101000a900460ff165b80156129a55750600e54600f546129a191906142de565b4210155b156129b4576129b261312a565b505b6129bf858585612b90565b50505b505050565b6000838311158290612a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0691906137cd565b60405180910390fd5b5060008385612a1e91906149e7565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000808303612ade5760009050612b40565b60008284612aec9190613d35565b9050828482612afb9190613da6565b14612b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3290614a8d565b60405180910390fd5b809150505b92915050565b6000612b8883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132ca565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf6906146c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6590614752565b60405180910390fd5b612c7983838361332d565b612ce481604051806060016040528060268152602001614da3602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129c79092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d77816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebd90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e16919061398c565b60405180910390a3505050565b600080612e2e613332565b90508091505090565b60004382109050919050565b6000612e4e306111f5565b90506000601454601554601354612e6591906142de565b612e6f91906142de565b9050600080831480612e815750600082145b15612e8e57505050613128565b6014600b54612e9d9190613d35565b831115612eb6576014600b54612eb39190613d35565b92505b600060028360135486612ec99190613d35565b612ed39190613da6565b612edd9190613da6565b90506000612ef482866133da90919063ffffffff16565b90506000479050612f0482613424565b6000612f1982476133da90919063ffffffff16565b90506000612f4487612f3660155485612acc90919063ffffffff16565b612b4690919063ffffffff16565b90506000612f6f88612f6160145486612acc90919063ffffffff16565b612b4690919063ffffffff16565b90506000818385612f8091906149e7565b612f8a91906149e7565b9050600060138190555060006015819055506000601481905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612fea90614ade565b60006040518083038185875af1925050503d8060008114613027576040519150601f19603f3d011682016040523d82523d6000602084013e61302c565b606091505b5050809850506000871180156130425750600081115b1561308f576130518782613661565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260135460405161308693929190614af3565b60405180910390a15b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130d590614ade565b60006040518083038185875af1925050503d8060008114613112576040519150601f19603f3d011682016040523d82523d6000602084013e613117565b606091505b505080985050505050505050505050505b565b600042600f8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016131909190613a63565b602060405180830381865afa1580156131ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d19190614425565b905060006131fe6127106131f0600d5485612acc90919063ffffffff16565b612b4690919063ffffffff16565b9050600081111561323957613238600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b90565b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156132a857600080fd5b505af11580156132bc573d6000803e3d6000fd5b505050506001935050505090565b60008083118290613311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330891906137cd565b60405180910390fd5b50600083856133209190613da6565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146133b157600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166133d5565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b600061341c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129c7565b905092915050565b6000600267ffffffffffffffff81111561344157613440614b2a565b5b60405190808252806020026020018201604052801561346f5781602001602082028036833780820191505090505b509050308160008151811061348757613486613e69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561352c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135509190614b6e565b8160018151811061356457613563613e69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506135c9307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f23565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161362b959493929190614c94565b600060405180830381600087803b15801561364557600080fd5b505af1158015613659573d6000803e3d6000fd5b505050505050565b61368c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f23565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016136f396959493929190614cee565b60606040518083038185885af1158015613711573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906137369190614d4f565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561377757808201518184015260208101905061375c565b60008484015250505050565b6000601f19601f8301169050919050565b600061379f8261373d565b6137a98185613748565b93506137b9818560208601613759565b6137c281613783565b840191505092915050565b600060208201905081810360008301526137e78184613794565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613824826137f9565b9050919050565b61383481613819565b811461383f57600080fd5b50565b6000813590506138518161382b565b92915050565b6000819050919050565b61386a81613857565b811461387557600080fd5b50565b60008135905061388781613861565b92915050565b600080604083850312156138a4576138a36137ef565b5b60006138b285828601613842565b92505060206138c385828601613878565b9150509250929050565b60008115159050919050565b6138e2816138cd565b82525050565b60006020820190506138fd60008301846138d9565b92915050565b6000819050919050565b600061392861392361391e846137f9565b613903565b6137f9565b9050919050565b600061393a8261390d565b9050919050565b600061394c8261392f565b9050919050565b61395c81613941565b82525050565b60006020820190506139776000830184613953565b92915050565b61398681613857565b82525050565b60006020820190506139a1600083018461397d565b92915050565b6000602082840312156139bd576139bc6137ef565b5b60006139cb84828501613842565b91505092915050565b6000602082840312156139ea576139e96137ef565b5b60006139f884828501613878565b91505092915050565b600080600060608486031215613a1a57613a196137ef565b5b6000613a2886828701613842565b9350506020613a3986828701613842565b9250506040613a4a86828701613878565b9150509250925092565b613a5d81613819565b82525050565b6000602082019050613a786000830184613a54565b92915050565b600060ff82169050919050565b613a9481613a7e565b82525050565b6000602082019050613aaf6000830184613a8b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613ada57613ad9613ab5565b5b8235905067ffffffffffffffff811115613af757613af6613aba565b5b602083019150836020820283011115613b1357613b12613abf565b5b9250929050565b613b23816138cd565b8114613b2e57600080fd5b50565b600081359050613b4081613b1a565b92915050565b600080600060408486031215613b5f57613b5e6137ef565b5b600084013567ffffffffffffffff811115613b7d57613b7c6137f4565b5b613b8986828701613ac4565b93509350506020613b9c86828701613b31565b9150509250925092565b600080600060608486031215613bbf57613bbe6137ef565b5b6000613bcd86828701613878565b9350506020613bde86828701613878565b9250506040613bef86828701613b31565b9150509250925092565b600060208284031215613c0f57613c0e6137ef565b5b6000613c1d84828501613b31565b91505092915050565b60008060408385031215613c3d57613c3c6137ef565b5b6000613c4b85828601613842565b9250506020613c5c85828601613b31565b9150509250929050565b60008060408385031215613c7d57613c7c6137ef565b5b6000613c8b85828601613842565b9250506020613c9c85828601613842565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613ced57607f821691505b602082108103613d0057613cff613ca6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d4082613857565b9150613d4b83613857565b9250828202613d5981613857565b91508282048414831517613d7057613d6f613d06565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613db182613857565b9150613dbc83613857565b925082613dcc57613dcb613d77565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000613e33602f83613748565b9150613e3e82613dd7565b604082019050919050565b60006020820190508181036000830152613e6281613e26565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613ea382613857565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613ed557613ed4613d06565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000613f3c603383613748565b9150613f4782613ee0565b604082019050919050565b60006020820190508181036000830152613f6b81613f2f565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000613fce603083613748565b9150613fd982613f72565b604082019050919050565b60006020820190508181036000830152613ffd81613fc1565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614060603983613748565b915061406b82614004565b604082019050919050565b6000602082019050818103600083015261408f81614053565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f312e352500000000000000000000000000000000000000000000000000000000602082015250565b60006140f2602483613748565b91506140fd82614096565b604082019050919050565b60006020820190508181036000830152614121816140e5565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614184603583613748565b915061418f82614128565b604082019050919050565b600060208201905081810360008301526141b381614177565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614216603483613748565b9150614221826141ba565b604082019050919050565b6000602082019050818103600083015261424581614209565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142a8602683613748565b91506142b38261424c565b604082019050919050565b600060208201905081810360008301526142d78161429b565b9050919050565b60006142e982613857565b91506142f483613857565b925082820190508082111561430c5761430b613d06565b5b92915050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614348602083613748565b915061435382614312565b602082019050919050565b600060208201905081810360008301526143778161433b565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b60006143da602a83613748565b91506143e58261437e565b604082019050919050565b60006020820190508181036000830152614409816143cd565b9050919050565b60008151905061441f81613861565b92915050565b60006020828403121561443b5761443a6137ef565b5b600061444984828501614410565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614488601b83613748565b915061449382614452565b602082019050919050565b600060208201905081810360008301526144b78161447b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061451a602483613748565b9150614525826144be565b604082019050919050565b600060208201905081810360008301526145498161450d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006145ac602283613748565b91506145b782614550565b604082019050919050565b600060208201905081810360008301526145db8161459f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614618602083613748565b9150614623826145e2565b602082019050919050565b600060208201905081810360008301526146478161460b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006146aa602583613748565b91506146b58261464e565b604082019050919050565b600060208201905081810360008301526146d98161469d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061473c602383613748565b9150614747826146e0565b604082019050919050565b6000602082019050818103600083015261476b8161472f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006147a8601683613748565b91506147b382614772565b602082019050919050565b600060208201905081810360008301526147d78161479b565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061483a603683613748565b9150614845826147de565b604082019050919050565b600060208201905081810360008301526148698161482d565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006148a6601383613748565b91506148b182614870565b602082019050919050565b600060208201905081810360008301526148d581614899565b9050919050565b60006060820190506148f16000830186613a54565b6148fe6020830185613a54565b61490b604083018461397d565b949350505050565b60008151905061492281613b1a565b92915050565b60006020828403121561493e5761493d6137ef565b5b600061494c84828501614913565b91505092915050565b7f5472616e736665722044656c617920656e61626c65642e20204f6e6c79206f6e60008201527f652070757263686173652070657220626c6f636b20616c6c6f7765642e000000602082015250565b60006149b1603d83613748565b91506149bc82614955565b604082019050919050565b600060208201905081810360008301526149e0816149a4565b9050919050565b60006149f282613857565b91506149fd83613857565b9250828203905081811115614a1557614a14613d06565b5b92915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a77602183613748565b9150614a8282614a1b565b604082019050919050565b60006020820190508181036000830152614aa681614a6a565b9050919050565b600081905092915050565b50565b6000614ac8600083614aad565b9150614ad382614ab8565b600082019050919050565b6000614ae982614abb565b9150819050919050565b6000606082019050614b08600083018661397d565b614b15602083018561397d565b614b22604083018461397d565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614b688161382b565b92915050565b600060208284031215614b8457614b836137ef565b5b6000614b9284828501614b59565b91505092915050565b6000819050919050565b6000614bc0614bbb614bb684614b9b565b613903565b613857565b9050919050565b614bd081614ba5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c0b81613819565b82525050565b6000614c1d8383614c02565b60208301905092915050565b6000602082019050919050565b6000614c4182614bd6565b614c4b8185614be1565b9350614c5683614bf2565b8060005b83811015614c87578151614c6e8882614c11565b9750614c7983614c29565b925050600181019050614c5a565b5085935050505092915050565b600060a082019050614ca9600083018861397d565b614cb66020830187614bc7565b8181036040830152614cc88186614c36565b9050614cd76060830185613a54565b614ce4608083018461397d565b9695505050505050565b600060c082019050614d036000830189613a54565b614d10602083018861397d565b614d1d6040830187614bc7565b614d2a6060830186614bc7565b614d376080830185613a54565b614d4460a083018461397d565b979650505050505050565b600080600060608486031215614d6857614d676137ef565b5b6000614d7686828701614410565b9350506020614d8786828701614410565b9250506040614d9886828701614410565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e49f1f55e3cfd1be0bc0c4a65d83eca468063d17776d09f62329f7c31864f13464736f6c63430008110033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000006c050d93b1137560c3ad4e531b69fb518c25d71200000000000000000000000000000000000000000000000000000000000000010000000000000000000000007107030b0bf941d0792819e1094a66818545341e

-----Decoded View---------------
Arg [0] : dex_ (address): 0x6C050D93b1137560c3ad4E531b69FB518c25d712
Arg [1] : d (uint256): 1
Arg [2] : init_ (address): 0x7107030b0Bf941D0792819E1094a66818545341E

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000006c050d93b1137560c3ad4e531b69fb518c25d712
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [2] : 0000000000000000000000007107030b0bf941d0792819e1094a66818545341e


Deployed Bytecode Sourcemap

9815:12312:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1189:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3362:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9889:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2311:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15309:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10418:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14378:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10271:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10835:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10909;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13674:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4014:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9982:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10327:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10587:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2153:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4779:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9947:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10626:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10666:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14142:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2483:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1383:148:4;;;;;;;;;;;;;:::i;:::-;;20388:447:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12901:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10084:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12701:191;;;;;;;;;;;;;:::i;:::-;;649:79:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10121:24:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14527:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1409:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14640:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10472:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10875:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13173:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5501:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10379:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10704:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2824:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15092:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11191:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10794:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13917:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12544:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10748:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10155:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13284:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3063:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10197:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13030:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1829:244:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10237:24:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21364:760;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1189:100;1243:13;1276:5;1269:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1189:100;:::o;3362:169::-;3445:4;3462:39;3471:12;:10;:12::i;:::-;3485:7;3494:6;3462:8;:39::i;:::-;3519:4;3512:11;;3362:169;;;;:::o;9889:51::-;;;:::o;2311:108::-;2372:7;2399:12;;2392:19;;2311:108;:::o;15309:157::-;854:13:4;:11;:13::i;:::-;15416:9:1::1;;;;;;;;;;;15388:38;;15405:9;15388:38;;;;;;;;;;;;15449:9;15437;;:21;;;;;;;;;;;;;;;;;;15309:157:::0;:::o;10418:47::-;;;;:::o;14378:140::-;14450:4;14473:31;:37;14505:4;14473:37;;;;;;;;;;;;;;;;;;;;;;;;;14466:44;;14378:140;;;:::o;10271:36::-;;;;:::o;10835:33::-;;;;:::o;10909:::-;;;;:::o;13674:234::-;854:13:4;:11;:13::i;:::-;13793:4:1::1;13787;13783:1;13767:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;13766:31;;;;:::i;:::-;13756:6;:41;;13748:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;13893:6;13883;:17;;;;:::i;:::-;13860:20;:40;;;;13674:234:::0;:::o;4014:355::-;4154:4;4171:36;4181:6;4189:9;4200:6;4171:9;:36::i;:::-;4218:121;4227:6;4235:12;:10;:12::i;:::-;4249:89;4287:6;4249:89;;;;;;;;;;;;;;;;;:11;:19;4261:6;4249:19;;;;;;;;;;;;;;;:33;4269:12;:10;:12::i;:::-;4249:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;4218:8;:121::i;:::-;4357:4;4350:11;;4014:355;;;;;:::o;9982:89::-;10028:42;9982:89;:::o;10327:45::-;;;;:::o;10587:32::-;;;;;;;;;;;;;:::o;2153:92::-;2211:5;2236:1;2229:8;;2153:92;:::o;4779:218::-;4867:4;4884:83;4893:12;:10;:12::i;:::-;4907:7;4916:50;4955:10;4916:11;:25;4928:12;:10;:12::i;:::-;4916:25;;;;;;;;;;;;;;;:34;4942:7;4916:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4884:8;:83::i;:::-;4985:4;4978:11;;4779:218;;;;:::o;9947:28::-;;;;;;;;;;;;;:::o;10626:33::-;;;;;;;;;;;;;:::o;10666:31::-;;;;;;;;;;;;;:::o;14142:228::-;854:13:4;:11;:13::i;:::-;14248:9:1::1;14243:120;14267:6;;:13;;14263:1;:17;14243:120;;;14347:4;14302:31;:42;14334:6;;14341:1;14334:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14302:42;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;14282:3;;;;;:::i;:::-;;;;14243:120;;;;14142:228:::0;;;:::o;2483:127::-;2557:7;2584:9;:18;2594:7;2584:18;;;;;;;;;;;;;;;;2577:25;;2483:127;;;:::o;1383:148:4:-;854:13;:11;:13::i;:::-;1490:1:::1;1453:40;;1474:6;;;;;;;;;;;1453:40;;;;;;;;;;;;1521:1;1504:6;;:19;;;;;;;;;;;;;;;;;;1383:148::o:0;20388:447:1:-;854:13:4;:11;:13::i;:::-;20542:3:1::1;20519:19;:26;;20511:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;20632:4;20620:8;:16;;:33;;;;;20652:1;20640:8;:13;;20620:33;20612:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;20735:19;20717:15;:37;;;;20784:8;20765:16;:27;;;;20819:8;20803:13;;:24;;;;;;;;;;;;;;;;;;20388:447:::0;;;:::o;12901:120::-;12953:4;854:13:4;:11;:13::i;:::-;12986:5:1::1;12969:14;;:22;;;;;;;;;;;;;;;;;;13009:4;13002:11;;12901:120:::0;:::o;10084:30::-;;;;;;;;;;;;;:::o;12701:191::-;854:13:4;:11;:13::i;:::-;12772:4:1::1;12756:13;;:20;;;;;;;;;;;;;;;;;;12801:4;12787:11;;:18;;;;;;;;;;;;;;;;;;12833:15;12816:14;:32;;;;12872:12;12859:10;:25;;;;12701:191::o:0;649:79:4:-;687:7;714:6;;;;;;;;;;;707:13;;649:79;:::o;10121:24:1:-;;;;;;;;;;;;;:::o;14527:101::-;854:13:4;:11;:13::i;:::-;14613:7:1::1;14599:11;;:21;;;;;;;;;;;;;;;;;;14527:101:::0;:::o;1409:104::-;1465:13;1498:7;1491:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1409:104;:::o;14640:245::-;854:13:4;:11;:13::i;:::-;14747::1::1;;;;;;;;;;;14739:21;;:4;:21;;::::0;14731:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14836:41;14865:4;14871:5;14836:28;:41::i;:::-;14640:245:::0;;:::o;10472:35::-;;;;:::o;10875:27::-;;;;:::o;13173:102::-;854:13:4;:11;:13::i;:::-;13262:5:1::1;13241:18;;:26;;;;;;;;;;;;;;;;;;13173:102:::0;:::o;5501:269::-;5594:4;5611:129;5620:12;:10;:12::i;:::-;5634:7;5643:96;5682:15;5643:96;;;;;;;;;;;;;;;;;:11;:25;5655:12;:10;:12::i;:::-;5643:25;;;;;;;;;;;;;;;:34;5669:7;5643:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;5611:8;:129::i;:::-;5758:4;5751:11;;5501:269;;;;:::o;10379:29::-;;;;:::o;10704:37::-;;;;;;;;;;;;;:::o;2824:175::-;2910:4;2927:42;2937:12;:10;:12::i;:::-;2951:9;2962:6;2927:9;:42::i;:::-;2987:4;2980:11;;2824:175;;;;:::o;15092:208::-;854:13:4;:11;:13::i;:::-;15229:15:1::1;;;;;;;;;;;15186:59;;15209:18;15186:59;;;;;;;;;;;;15274:18;15256:15;;:36;;;;;;;;;;;;;;;;;;15092:208:::0;:::o;11191:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;10794:31::-;;;;;;;;;;;;;:::o;13917:216::-;854:13:4;:11;:13::i;:::-;14040:4:1::1;14034;14029:2;14013:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;14012:32;;;;:::i;:::-;14002:6;:42;;13994:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;14118:6;14108;:17;;;;:::i;:::-;14096:9;:29;;;;13917:216:::0;:::o;12544:149::-;854:13:4;:11;:13::i;:::-;12620:5:1::1;12604:13;;:21;;;;;;;;;;;;;;;;;;12636:49;12665:13;;;;;;;;;;;12680:4;12636:28;:49::i;:::-;12544:149:::0;:::o;10748:39::-;;;;;;;;;;;;;:::o;10155:35::-;;;;:::o;13284:381::-;13365:4;854:13:4;:11;:13::i;:::-;13421:6:1::1;13417:1;13401:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;13388:9;:39;;13380:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;13536:4;13532:1;13516:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;13503:9;:37;;13495:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;13628:9;13607:18;:30;;;;13654:4;13647:11;;13284:381:::0;;;:::o;3063:151::-;3152:7;3179:11;:18;3191:5;3179:18;;;;;;;;;;;;;;;:27;3198:7;3179:27;;;;;;;;;;;;;;;;3172:34;;3063:151;;;;:::o;10197:33::-;;;;:::o;13030:134::-;13090:4;854:13:4;:11;:13::i;:::-;13129:5:1::1;13106:20;;:28;;;;;;;;;;;;;;;;;;13152:4;13145:11;;13030:134:::0;:::o;1829:244:4:-;854:13;:11;:13::i;:::-;1938:1:::1;1918:22;;:8;:22;;::::0;1910:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2028:8;1999:38;;2020:6;;;;;;;;;;;1999:38;;;;;;;;;;;;2057:8;2048:6;;:17;;;;;;;;;;;;;;;;;;1829:244:::0;:::o;10237:24:1:-;;;;:::o;21364:760::-;21448:4;854:13:4;:11;:13::i;:::-;21513:19:1::1;;21490:20;;:42;;;;:::i;:::-;21472:15;:60;21464:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;21600:4;21589:7;:15;;21581:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21685:15;21662:20;:38;;;;21714:28;21745:4;:14;;;21760:13;;;;;;;;;;;21745:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21714:60;;21788:20;21811:44;21849:5;21811:33;21836:7;21811:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;21788:67;;21888:1;21873:12;:16;21869:109;;;21905:61;21921:13;;;;;;;;;;;21944:6;21953:12;21905:15;:61::i;:::-;21869:109;21991:19;22028:13;;;;;;;;;;;21991:51;;22053:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22080:14;;;;;;;;;;22112:4;22105:11;;;;;21364:760:::0;;;:::o;329:182:3:-;387:7;407:9;423:1;419;:5;;;;:::i;:::-;407:17;;448:1;443;:6;;435:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;502:1;495:8;;;329:182;;;;:::o;99:98:0:-;152:7;179:10;172:17;;99:98;:::o;8694:381:1:-;8847:1;8830:19;;:5;:19;;;8822:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8928:1;8909:21;;:7;:21;;;8901:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9013:6;8983:11;:18;8995:5;8983:18;;;;;;;;;;;;;;;:27;9002:7;8983:27;;;;;;;;;;;;;;;:36;;;;9051:7;9035:32;;9044:5;9035:32;;;9060:6;9035:32;;;;;;:::i;:::-;;;;;;;;8694:381;;;:::o;1543:127:4:-;1613:12;:10;:12::i;:::-;1602:23;;:7;:5;:7::i;:::-;:23;;;1594:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1543:127::o;15526:2242:1:-;15697:1;15681:18;;:4;:18;;;15673:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15774:1;15760:16;;:2;:16;;;15752:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15841:1;15831:6;:11;15828:92;;15859:28;15875:4;15881:2;15885:1;15859:15;:28::i;:::-;15902:7;;15828:92;15943:14;;;;;;;;;;;15940:811;;;16003:7;:5;:7::i;:::-;15995:15;;:4;:15;;;;:49;;;;;16037:7;:5;:7::i;:::-;16031:13;;:2;:13;;;;15995:49;:86;;;;;16079:1;16065:16;;:2;:16;;;;15995:86;:128;;;;;16116:6;16102:21;;:2;:21;;;;15995:128;:158;;;;;16145:8;;;;;;;;;;;16144:9;15995:158;15973:777;;;16191:13;;;;;;;;;;;16187:140;;16244:9;;;;;;;;;;;16236:17;;:4;:17;;;:44;;;;16265:15;;;;;;;;;;;16257:23;;:4;:23;;;16236:44;16228:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;16187:140;16349:25;:29;16375:2;16349:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;16383:31;:37;16415:4;16383:37;;;;;;;;;;;;;;;;;;;;;;;;;16382:38;16349:71;16345:378;;;16467:20;;16457:6;:30;;16449:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;16345:378;;;16593:31;:37;16625:4;16593:37;;;;;;;;;;;;;;;;;;;;;;;;;16589:134;;16688:9;;16671:13;16681:2;16671:9;:13::i;:::-;16662:6;:22;;;;:::i;:::-;:35;;16654:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16589:134;16345:378;15973:777;15940:811;16769:9;;;;;;;;;;;:22;;;16792:4;16798:2;16802:6;16769:40;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16832:20;;;;;;;;;;;:56;;;;;16857:25;:31;16883:4;16857:31;;;;;;;;;;;;;;;;;;;;;;;;;16856:32;16832:56;16828:345;;;16922:7;:5;:7::i;:::-;16916:13;;:2;:13;;;;:54;;;;;16933:31;:37;16965:4;16933:37;;;;;;;;;;;;;;;;;;;;;;;;;16916:54;16912:242;;;17006:58;17029:28;:34;17058:4;17029:34;;;;;;;;;;;;;;;;17006:22;:58::i;:::-;16998:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;16912:242;16828:345;17177:28;17208:24;17226:4;17208:9;:24::i;:::-;17177:55;;17246:12;17285:18;;17261:20;:42;;17246:57;;17332:7;:33;;;;;17357:8;;;;;;;;;;;17356:9;17332:33;:82;;;;;17383:25;:31;17409:4;17383:31;;;;;;;;;;;;;;;;;;;;;;;;;17382:32;17332:82;17314:216;;;17452:4;17441:8;;:15;;;;;;;;;;;;;;;;;;17474:10;:8;:10::i;:::-;17513:5;17502:8;;:16;;;;;;;;;;;;;;;;;;17314:216;17544:8;;;;;;;;;;;17543:9;:42;;;;;17556:25;:29;17582:2;17556:29;;;;;;;;;;;;;;;;;;;;;;;;;17543:42;:59;;;;;17589:13;;;;;;;;;;;17543:59;:114;;;;;17642:15;;17625:14;;:32;;;;:::i;:::-;17606:15;:51;;17543:114;17540:174;;;17673:29;:27;:29::i;:::-;;17540:174;17727:33;17743:4;17749:2;17753:6;17727:15;:33::i;:::-;15639:2129;;15526:2242;;;;:::o;1235:193:3:-;1321:7;1354:1;1349;:6;;1357:12;1341:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1381:9;1397:1;1393;:5;;;;:::i;:::-;1381:17;;1419:1;1412:8;;;1235:193;;;;;:::o;14894:189:1:-;15011:5;14977:25;:31;15003:4;14977:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;15069:5;15035:40;;15063:4;15035:40;;;;;;;;;;;;14894:189;;:::o;1688:473:3:-;1746:7;1996:1;1991;:6;1987:47;;2021:1;2014:8;;;;1987:47;2047:9;2063:1;2059;:5;;;;:::i;:::-;2047:17;;2092:1;2087;2083;:5;;;;:::i;:::-;:10;2075:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2152:1;2145:8;;;1688:473;;;;;:::o;2638:132::-;2696:7;2723:39;2727:1;2730;2723:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2716:46;;2638:132;;;;:::o;6261:572:1:-;6419:1;6401:20;;:6;:20;;;6393:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6503:1;6482:23;;:9;:23;;;6474:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6556:47;6577:6;6585:9;6596:6;6556:20;:47::i;:::-;6637:71;6659:6;6637:71;;;;;;;;;;;;;;;;;:9;:17;6647:6;6637:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;6617:9;:17;6627:6;6617:17;;;;;;;;;;;;;;;:91;;;;6742:32;6767:6;6742:9;:20;6752:9;6742:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6719:9;:20;6729:9;6719:20;;;;;;;;;;;;;;;:55;;;;6807:9;6790:35;;6799:6;6790:35;;;6818:6;6790:35;;;;;;:::i;:::-;;;;;;;;6261:572;;;:::o;899:135:4:-;942:7;972:14;989:13;:11;:13::i;:::-;972:30;;1020:6;1013:13;;;899:135;:::o;18296:117:1:-;18363:4;18393:12;18386:4;:19;18379:26;;18296:117;;;:::o;18851:1528::-;18890:23;18916:24;18934:4;18916:9;:24::i;:::-;18890:50;;18951:25;19021:12;;19000:18;;18979;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;18951:82;;19044:12;19092:1;19073:15;:20;:46;;;;19118:1;19097:17;:22;19073:46;19070:60;;;19122:7;;;;;19070:60;19185:2;19164:18;;:23;;;;:::i;:::-;19146:15;:41;19143:111;;;19240:2;19219:18;;:23;;;;:::i;:::-;19201:41;;19143:111;19267:23;19352:1;19332:17;19311:18;;19293:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;19267:86;;19364:26;19393:36;19413:15;19393;:19;;:36;;;;:::i;:::-;19364:65;;19443:25;19471:21;19443:49;;19506:36;19523:18;19506:16;:36::i;:::-;19557:18;19578:44;19604:17;19578:21;:25;;:44;;;;:::i;:::-;19557:65;;19636:23;19662:57;19701:17;19662:34;19677:18;;19662:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;19636:83;;19730:17;19750:51;19783:17;19750:28;19765:12;;19750:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;19730:71;;19818:23;19875:9;19857:15;19844:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;19818:66;;19922:1;19901:18;:22;;;;19955:1;19934:18;:22;;;;19982:1;19967:12;:16;;;;20018:9;;;;;;;;;;;20010:23;;20041:9;20010:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19997:58;;;;;20090:1;20072:15;:19;:42;;;;;20113:1;20095:15;:19;20072:42;20069:210;;;20130:46;20143:15;20160;20130:12;:46::i;:::-;20196:71;20211:18;20231:15;20248:18;;20196:71;;;;;;;;:::i;:::-;;;;;;;;20069:210;20316:15;;;;;;;;;;;20308:29;;20345:21;20308:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20295:76;;;;;18879:1500;;;;;;;;;;18851:1528;:::o;20844:511::-;20901:4;20937:15;20920:14;:32;;;;20966:28;20997:4;:14;;;21012:13;;;;;;;;;;;20997:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20966:60;;21040:20;21063:53;21110:5;21063:42;21088:16;;21063:20;:24;;:42;;;;:::i;:::-;:46;;:53;;;;:::i;:::-;21040:76;;21149:1;21134:12;:16;21130:109;;;21166:61;21182:13;;;;;;;;;;;21205:6;21214:12;21166:15;:61::i;:::-;21130:109;21252:19;21289:13;;;;;;;;;;;21252:51;;21314:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21343:4;21336:11;;;;;20844:511;:::o;3267:279:3:-;3353:7;3385:1;3381;:5;3388:12;3373:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3412:9;3428:1;3424;:5;;;;:::i;:::-;3412:17;;3537:1;3530:8;;;3267:279;;;;;:::o;9679:125:1:-;;;;:::o;2081:113:4:-;2126:7;2168:1;2152:18;;:6;;;;;;;;;;;:18;;;:34;;2180:6;;;;;;;;;;;2152:34;;;2173:4;;;;;;;;;;;2152:34;2145:41;;2081:113;:::o;795:136:3:-;853:7;880:43;884:1;887;880:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;873:50;;795:136;;;;:::o;17777:511:1:-;17846:21;17884:1;17870:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17846:40;;17915:4;17897;17902:1;17897:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17941:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17931:4;17936:1;17931:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17977:62;17994:4;18009:15;18027:11;17977:8;:62::i;:::-;18053:15;:66;;;18134:11;18160:1;18204:4;18231;18251:15;18053:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17832:456;17777:511;:::o;18421:421::-;18502:62;18519:4;18534:15;18552:11;18502:8;:62::i;:::-;18578:15;:31;;;18617:9;18650:4;18670:11;18696:1;18739;10028:42;18808:15;18578:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18421:421;;:::o;7:99:6:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:329::-;4835:6;4884:2;4872:9;4863:7;4859:23;4855:32;4852:119;;;4890:79;;:::i;:::-;4852:119;5010:1;5035:53;5080:7;5071:6;5060:9;5056:22;5035:53;:::i;:::-;5025:63;;4981:117;4776:329;;;;:::o;5111:::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:118::-;6158:24;6176:5;6158:24;:::i;:::-;6153:3;6146:37;6071:118;;:::o;6195:222::-;6288:4;6326:2;6315:9;6311:18;6303:26;;6339:71;6407:1;6396:9;6392:17;6383:6;6339:71;:::i;:::-;6195:222;;;;:::o;6423:86::-;6458:7;6498:4;6491:5;6487:16;6476:27;;6423:86;;;:::o;6515:112::-;6598:22;6614:5;6598:22;:::i;:::-;6593:3;6586:35;6515:112;;:::o;6633:214::-;6722:4;6760:2;6749:9;6745:18;6737:26;;6773:67;6837:1;6826:9;6822:17;6813:6;6773:67;:::i;:::-;6633:214;;;;:::o;6853:117::-;6962:1;6959;6952:12;6976:117;7085:1;7082;7075:12;7099:117;7208:1;7205;7198:12;7239:568;7312:8;7322:6;7372:3;7365:4;7357:6;7353:17;7349:27;7339:122;;7380:79;;:::i;:::-;7339:122;7493:6;7480:20;7470:30;;7523:18;7515:6;7512:30;7509:117;;;7545:79;;:::i;:::-;7509:117;7659:4;7651:6;7647:17;7635:29;;7713:3;7705:4;7697:6;7693:17;7683:8;7679:32;7676:41;7673:128;;;7720:79;;:::i;:::-;7673:128;7239:568;;;;;:::o;7813:116::-;7883:21;7898:5;7883:21;:::i;:::-;7876:5;7873:32;7863:60;;7919:1;7916;7909:12;7863:60;7813:116;:::o;7935:133::-;7978:5;8016:6;8003:20;7994:29;;8032:30;8056:5;8032:30;:::i;:::-;7935:133;;;;:::o;8074:698::-;8166:6;8174;8182;8231:2;8219:9;8210:7;8206:23;8202:32;8199:119;;;8237:79;;:::i;:::-;8199:119;8385:1;8374:9;8370:17;8357:31;8415:18;8407:6;8404:30;8401:117;;;8437:79;;:::i;:::-;8401:117;8550:80;8622:7;8613:6;8602:9;8598:22;8550:80;:::i;:::-;8532:98;;;;8328:312;8679:2;8705:50;8747:7;8738:6;8727:9;8723:22;8705:50;:::i;:::-;8695:60;;8650:115;8074:698;;;;;:::o;8778:613::-;8852:6;8860;8868;8917:2;8905:9;8896:7;8892:23;8888:32;8885:119;;;8923:79;;:::i;:::-;8885:119;9043:1;9068:53;9113:7;9104:6;9093:9;9089:22;9068:53;:::i;:::-;9058:63;;9014:117;9170:2;9196:53;9241:7;9232:6;9221:9;9217:22;9196:53;:::i;:::-;9186:63;;9141:118;9298:2;9324:50;9366:7;9357:6;9346:9;9342:22;9324:50;:::i;:::-;9314:60;;9269:115;8778:613;;;;;:::o;9397:323::-;9453:6;9502:2;9490:9;9481:7;9477:23;9473:32;9470:119;;;9508:79;;:::i;:::-;9470:119;9628:1;9653:50;9695:7;9686:6;9675:9;9671:22;9653:50;:::i;:::-;9643:60;;9599:114;9397:323;;;;:::o;9726:468::-;9791:6;9799;9848:2;9836:9;9827:7;9823:23;9819:32;9816:119;;;9854:79;;:::i;:::-;9816:119;9974:1;9999:53;10044:7;10035:6;10024:9;10020:22;9999:53;:::i;:::-;9989:63;;9945:117;10101:2;10127:50;10169:7;10160:6;10149:9;10145:22;10127:50;:::i;:::-;10117:60;;10072:115;9726:468;;;;;:::o;10200:474::-;10268:6;10276;10325:2;10313:9;10304:7;10300:23;10296:32;10293:119;;;10331:79;;:::i;:::-;10293:119;10451:1;10476:53;10521:7;10512:6;10501:9;10497:22;10476:53;:::i;:::-;10466:63;;10422:117;10578:2;10604:53;10649:7;10640:6;10629:9;10625:22;10604:53;:::i;:::-;10594:63;;10549:118;10200:474;;;;;:::o;10680:180::-;10728:77;10725:1;10718:88;10825:4;10822:1;10815:15;10849:4;10846:1;10839:15;10866:320;10910:6;10947:1;10941:4;10937:12;10927:22;;10994:1;10988:4;10984:12;11015:18;11005:81;;11071:4;11063:6;11059:17;11049:27;;11005:81;11133:2;11125:6;11122:14;11102:18;11099:38;11096:84;;11152:18;;:::i;:::-;11096:84;10917:269;10866:320;;;:::o;11192:180::-;11240:77;11237:1;11230:88;11337:4;11334:1;11327:15;11361:4;11358:1;11351:15;11378:410;11418:7;11441:20;11459:1;11441:20;:::i;:::-;11436:25;;11475:20;11493:1;11475:20;:::i;:::-;11470:25;;11530:1;11527;11523:9;11552:30;11570:11;11552:30;:::i;:::-;11541:41;;11731:1;11722:7;11718:15;11715:1;11712:22;11692:1;11685:9;11665:83;11642:139;;11761:18;;:::i;:::-;11642:139;11426:362;11378:410;;;;:::o;11794:180::-;11842:77;11839:1;11832:88;11939:4;11936:1;11929:15;11963:4;11960:1;11953:15;11980:185;12020:1;12037:20;12055:1;12037:20;:::i;:::-;12032:25;;12071:20;12089:1;12071:20;:::i;:::-;12066:25;;12110:1;12100:35;;12115:18;;:::i;:::-;12100:35;12157:1;12154;12150:9;12145:14;;11980:185;;;;:::o;12171:234::-;12311:34;12307:1;12299:6;12295:14;12288:58;12380:17;12375:2;12367:6;12363:15;12356:42;12171:234;:::o;12411:366::-;12553:3;12574:67;12638:2;12633:3;12574:67;:::i;:::-;12567:74;;12650:93;12739:3;12650:93;:::i;:::-;12768:2;12763:3;12759:12;12752:19;;12411:366;;;:::o;12783:419::-;12949:4;12987:2;12976:9;12972:18;12964:26;;13036:9;13030:4;13026:20;13022:1;13011:9;13007:17;13000:47;13064:131;13190:4;13064:131;:::i;:::-;13056:139;;12783:419;;;:::o;13208:180::-;13256:77;13253:1;13246:88;13353:4;13350:1;13343:15;13377:4;13374:1;13367:15;13394:233;13433:3;13456:24;13474:5;13456:24;:::i;:::-;13447:33;;13502:66;13495:5;13492:77;13489:103;;13572:18;;:::i;:::-;13489:103;13619:1;13612:5;13608:13;13601:20;;13394:233;;;:::o;13633:238::-;13773:34;13769:1;13761:6;13757:14;13750:58;13842:21;13837:2;13829:6;13825:15;13818:46;13633:238;:::o;13877:366::-;14019:3;14040:67;14104:2;14099:3;14040:67;:::i;:::-;14033:74;;14116:93;14205:3;14116:93;:::i;:::-;14234:2;14229:3;14225:12;14218:19;;13877:366;;;:::o;14249:419::-;14415:4;14453:2;14442:9;14438:18;14430:26;;14502:9;14496:4;14492:20;14488:1;14477:9;14473:17;14466:47;14530:131;14656:4;14530:131;:::i;:::-;14522:139;;14249:419;;;:::o;14674:235::-;14814:34;14810:1;14802:6;14798:14;14791:58;14883:18;14878:2;14870:6;14866:15;14859:43;14674:235;:::o;14915:366::-;15057:3;15078:67;15142:2;15137:3;15078:67;:::i;:::-;15071:74;;15154:93;15243:3;15154:93;:::i;:::-;15272:2;15267:3;15263:12;15256:19;;14915:366;;;:::o;15287:419::-;15453:4;15491:2;15480:9;15476:18;15468:26;;15540:9;15534:4;15530:20;15526:1;15515:9;15511:17;15504:47;15568:131;15694:4;15568:131;:::i;:::-;15560:139;;15287:419;;;:::o;15712:244::-;15852:34;15848:1;15840:6;15836:14;15829:58;15921:27;15916:2;15908:6;15904:15;15897:52;15712:244;:::o;15962:366::-;16104:3;16125:67;16189:2;16184:3;16125:67;:::i;:::-;16118:74;;16201:93;16290:3;16201:93;:::i;:::-;16319:2;16314:3;16310:12;16303:19;;15962:366;;;:::o;16334:419::-;16500:4;16538:2;16527:9;16523:18;16515:26;;16587:9;16581:4;16577:20;16573:1;16562:9;16558:17;16551:47;16615:131;16741:4;16615:131;:::i;:::-;16607:139;;16334:419;;;:::o;16759:223::-;16899:34;16895:1;16887:6;16883:14;16876:58;16968:6;16963:2;16955:6;16951:15;16944:31;16759:223;:::o;16988:366::-;17130:3;17151:67;17215:2;17210:3;17151:67;:::i;:::-;17144:74;;17227:93;17316:3;17227:93;:::i;:::-;17345:2;17340:3;17336:12;17329:19;;16988:366;;;:::o;17360:419::-;17526:4;17564:2;17553:9;17549:18;17541:26;;17613:9;17607:4;17603:20;17599:1;17588:9;17584:17;17577:47;17641:131;17767:4;17641:131;:::i;:::-;17633:139;;17360:419;;;:::o;17785:240::-;17925:34;17921:1;17913:6;17909:14;17902:58;17994:23;17989:2;17981:6;17977:15;17970:48;17785:240;:::o;18031:366::-;18173:3;18194:67;18258:2;18253:3;18194:67;:::i;:::-;18187:74;;18270:93;18359:3;18270:93;:::i;:::-;18388:2;18383:3;18379:12;18372:19;;18031:366;;;:::o;18403:419::-;18569:4;18607:2;18596:9;18592:18;18584:26;;18656:9;18650:4;18646:20;18642:1;18631:9;18627:17;18620:47;18684:131;18810:4;18684:131;:::i;:::-;18676:139;;18403:419;;;:::o;18828:239::-;18968:34;18964:1;18956:6;18952:14;18945:58;19037:22;19032:2;19024:6;19020:15;19013:47;18828:239;:::o;19073:366::-;19215:3;19236:67;19300:2;19295:3;19236:67;:::i;:::-;19229:74;;19312:93;19401:3;19312:93;:::i;:::-;19430:2;19425:3;19421:12;19414:19;;19073:366;;;:::o;19445:419::-;19611:4;19649:2;19638:9;19634:18;19626:26;;19698:9;19692:4;19688:20;19684:1;19673:9;19669:17;19662:47;19726:131;19852:4;19726:131;:::i;:::-;19718:139;;19445:419;;;:::o;19870:225::-;20010:34;20006:1;19998:6;19994:14;19987:58;20079:8;20074:2;20066:6;20062:15;20055:33;19870:225;:::o;20101:366::-;20243:3;20264:67;20328:2;20323:3;20264:67;:::i;:::-;20257:74;;20340:93;20429:3;20340:93;:::i;:::-;20458:2;20453:3;20449:12;20442:19;;20101:366;;;:::o;20473:419::-;20639:4;20677:2;20666:9;20662:18;20654:26;;20726:9;20720:4;20716:20;20712:1;20701:9;20697:17;20690:47;20754:131;20880:4;20754:131;:::i;:::-;20746:139;;20473:419;;;:::o;20898:191::-;20938:3;20957:20;20975:1;20957:20;:::i;:::-;20952:25;;20991:20;21009:1;20991:20;:::i;:::-;20986:25;;21034:1;21031;21027:9;21020:16;;21055:3;21052:1;21049:10;21046:36;;;21062:18;;:::i;:::-;21046:36;20898:191;;;;:::o;21095:182::-;21235:34;21231:1;21223:6;21219:14;21212:58;21095:182;:::o;21283:366::-;21425:3;21446:67;21510:2;21505:3;21446:67;:::i;:::-;21439:74;;21522:93;21611:3;21522:93;:::i;:::-;21640:2;21635:3;21631:12;21624:19;;21283:366;;;:::o;21655:419::-;21821:4;21859:2;21848:9;21844:18;21836:26;;21908:9;21902:4;21898:20;21894:1;21883:9;21879:17;21872:47;21936:131;22062:4;21936:131;:::i;:::-;21928:139;;21655:419;;;:::o;22080:229::-;22220:34;22216:1;22208:6;22204:14;22197:58;22289:12;22284:2;22276:6;22272:15;22265:37;22080:229;:::o;22315:366::-;22457:3;22478:67;22542:2;22537:3;22478:67;:::i;:::-;22471:74;;22554:93;22643:3;22554:93;:::i;:::-;22672:2;22667:3;22663:12;22656:19;;22315:366;;;:::o;22687:419::-;22853:4;22891:2;22880:9;22876:18;22868:26;;22940:9;22934:4;22930:20;22926:1;22915:9;22911:17;22904:47;22968:131;23094:4;22968:131;:::i;:::-;22960:139;;22687:419;;;:::o;23112:143::-;23169:5;23200:6;23194:13;23185:22;;23216:33;23243:5;23216:33;:::i;:::-;23112:143;;;;:::o;23261:351::-;23331:6;23380:2;23368:9;23359:7;23355:23;23351:32;23348:119;;;23386:79;;:::i;:::-;23348:119;23506:1;23531:64;23587:7;23578:6;23567:9;23563:22;23531:64;:::i;:::-;23521:74;;23477:128;23261:351;;;;:::o;23618:177::-;23758:29;23754:1;23746:6;23742:14;23735:53;23618:177;:::o;23801:366::-;23943:3;23964:67;24028:2;24023:3;23964:67;:::i;:::-;23957:74;;24040:93;24129:3;24040:93;:::i;:::-;24158:2;24153:3;24149:12;24142:19;;23801:366;;;:::o;24173:419::-;24339:4;24377:2;24366:9;24362:18;24354:26;;24426:9;24420:4;24416:20;24412:1;24401:9;24397:17;24390:47;24454:131;24580:4;24454:131;:::i;:::-;24446:139;;24173:419;;;:::o;24598:223::-;24738:34;24734:1;24726:6;24722:14;24715:58;24807:6;24802:2;24794:6;24790:15;24783:31;24598:223;:::o;24827:366::-;24969:3;24990:67;25054:2;25049:3;24990:67;:::i;:::-;24983:74;;25066:93;25155:3;25066:93;:::i;:::-;25184:2;25179:3;25175:12;25168:19;;24827:366;;;:::o;25199:419::-;25365:4;25403:2;25392:9;25388:18;25380:26;;25452:9;25446:4;25442:20;25438:1;25427:9;25423:17;25416:47;25480:131;25606:4;25480:131;:::i;:::-;25472:139;;25199:419;;;:::o;25624:221::-;25764:34;25760:1;25752:6;25748:14;25741:58;25833:4;25828:2;25820:6;25816:15;25809:29;25624:221;:::o;25851:366::-;25993:3;26014:67;26078:2;26073:3;26014:67;:::i;:::-;26007:74;;26090:93;26179:3;26090:93;:::i;:::-;26208:2;26203:3;26199:12;26192:19;;25851:366;;;:::o;26223:419::-;26389:4;26427:2;26416:9;26412:18;26404:26;;26476:9;26470:4;26466:20;26462:1;26451:9;26447:17;26440:47;26504:131;26630:4;26504:131;:::i;:::-;26496:139;;26223:419;;;:::o;26648:182::-;26788:34;26784:1;26776:6;26772:14;26765:58;26648:182;:::o;26836:366::-;26978:3;26999:67;27063:2;27058:3;26999:67;:::i;:::-;26992:74;;27075:93;27164:3;27075:93;:::i;:::-;27193:2;27188:3;27184:12;27177:19;;26836:366;;;:::o;27208:419::-;27374:4;27412:2;27401:9;27397:18;27389:26;;27461:9;27455:4;27451:20;27447:1;27436:9;27432:17;27425:47;27489:131;27615:4;27489:131;:::i;:::-;27481:139;;27208:419;;;:::o;27633:224::-;27773:34;27769:1;27761:6;27757:14;27750:58;27842:7;27837:2;27829:6;27825:15;27818:32;27633:224;:::o;27863:366::-;28005:3;28026:67;28090:2;28085:3;28026:67;:::i;:::-;28019:74;;28102:93;28191:3;28102:93;:::i;:::-;28220:2;28215:3;28211:12;28204:19;;27863:366;;;:::o;28235:419::-;28401:4;28439:2;28428:9;28424:18;28416:26;;28488:9;28482:4;28478:20;28474:1;28463:9;28459:17;28452:47;28516:131;28642:4;28516:131;:::i;:::-;28508:139;;28235:419;;;:::o;28660:222::-;28800:34;28796:1;28788:6;28784:14;28777:58;28869:5;28864:2;28856:6;28852:15;28845:30;28660:222;:::o;28888:366::-;29030:3;29051:67;29115:2;29110:3;29051:67;:::i;:::-;29044:74;;29127:93;29216:3;29127:93;:::i;:::-;29245:2;29240:3;29236:12;29229:19;;28888:366;;;:::o;29260:419::-;29426:4;29464:2;29453:9;29449:18;29441:26;;29513:9;29507:4;29503:20;29499:1;29488:9;29484:17;29477:47;29541:131;29667:4;29541:131;:::i;:::-;29533:139;;29260:419;;;:::o;29685:172::-;29825:24;29821:1;29813:6;29809:14;29802:48;29685:172;:::o;29863:366::-;30005:3;30026:67;30090:2;30085:3;30026:67;:::i;:::-;30019:74;;30102:93;30191:3;30102:93;:::i;:::-;30220:2;30215:3;30211:12;30204:19;;29863:366;;;:::o;30235:419::-;30401:4;30439:2;30428:9;30424:18;30416:26;;30488:9;30482:4;30478:20;30474:1;30463:9;30459:17;30452:47;30516:131;30642:4;30516:131;:::i;:::-;30508:139;;30235:419;;;:::o;30660:241::-;30800:34;30796:1;30788:6;30784:14;30777:58;30869:24;30864:2;30856:6;30852:15;30845:49;30660:241;:::o;30907:366::-;31049:3;31070:67;31134:2;31129:3;31070:67;:::i;:::-;31063:74;;31146:93;31235:3;31146:93;:::i;:::-;31264:2;31259:3;31255:12;31248:19;;30907:366;;;:::o;31279:419::-;31445:4;31483:2;31472:9;31468:18;31460:26;;31532:9;31526:4;31522:20;31518:1;31507:9;31503:17;31496:47;31560:131;31686:4;31560:131;:::i;:::-;31552:139;;31279:419;;;:::o;31704:169::-;31844:21;31840:1;31832:6;31828:14;31821:45;31704:169;:::o;31879:366::-;32021:3;32042:67;32106:2;32101:3;32042:67;:::i;:::-;32035:74;;32118:93;32207:3;32118:93;:::i;:::-;32236:2;32231:3;32227:12;32220:19;;31879:366;;;:::o;32251:419::-;32417:4;32455:2;32444:9;32440:18;32432:26;;32504:9;32498:4;32494:20;32490:1;32479:9;32475:17;32468:47;32532:131;32658:4;32532:131;:::i;:::-;32524:139;;32251:419;;;:::o;32676:442::-;32825:4;32863:2;32852:9;32848:18;32840:26;;32876:71;32944:1;32933:9;32929:17;32920:6;32876:71;:::i;:::-;32957:72;33025:2;33014:9;33010:18;33001:6;32957:72;:::i;:::-;33039;33107:2;33096:9;33092:18;33083:6;33039:72;:::i;:::-;32676:442;;;;;;:::o;33124:137::-;33178:5;33209:6;33203:13;33194:22;;33225:30;33249:5;33225:30;:::i;:::-;33124:137;;;;:::o;33267:345::-;33334:6;33383:2;33371:9;33362:7;33358:23;33354:32;33351:119;;;33389:79;;:::i;:::-;33351:119;33509:1;33534:61;33587:7;33578:6;33567:9;33563:22;33534:61;:::i;:::-;33524:71;;33480:125;33267:345;;;;:::o;33618:248::-;33758:34;33754:1;33746:6;33742:14;33735:58;33827:31;33822:2;33814:6;33810:15;33803:56;33618:248;:::o;33872:366::-;34014:3;34035:67;34099:2;34094:3;34035:67;:::i;:::-;34028:74;;34111:93;34200:3;34111:93;:::i;:::-;34229:2;34224:3;34220:12;34213:19;;33872:366;;;:::o;34244:419::-;34410:4;34448:2;34437:9;34433:18;34425:26;;34497:9;34491:4;34487:20;34483:1;34472:9;34468:17;34461:47;34525:131;34651:4;34525:131;:::i;:::-;34517:139;;34244:419;;;:::o;34669:194::-;34709:4;34729:20;34747:1;34729:20;:::i;:::-;34724:25;;34763:20;34781:1;34763:20;:::i;:::-;34758:25;;34807:1;34804;34800:9;34792:17;;34831:1;34825:4;34822:11;34819:37;;;34836:18;;:::i;:::-;34819:37;34669:194;;;;:::o;34869:220::-;35009:34;35005:1;34997:6;34993:14;34986:58;35078:3;35073:2;35065:6;35061:15;35054:28;34869:220;:::o;35095:366::-;35237:3;35258:67;35322:2;35317:3;35258:67;:::i;:::-;35251:74;;35334:93;35423:3;35334:93;:::i;:::-;35452:2;35447:3;35443:12;35436:19;;35095:366;;;:::o;35467:419::-;35633:4;35671:2;35660:9;35656:18;35648:26;;35720:9;35714:4;35710:20;35706:1;35695:9;35691:17;35684:47;35748:131;35874:4;35748:131;:::i;:::-;35740:139;;35467:419;;;:::o;35892:147::-;35993:11;36030:3;36015:18;;35892:147;;;;:::o;36045:114::-;;:::o;36165:398::-;36324:3;36345:83;36426:1;36421:3;36345:83;:::i;:::-;36338:90;;36437:93;36526:3;36437:93;:::i;:::-;36555:1;36550:3;36546:11;36539:18;;36165:398;;;:::o;36569:379::-;36753:3;36775:147;36918:3;36775:147;:::i;:::-;36768:154;;36939:3;36932:10;;36569:379;;;:::o;36954:442::-;37103:4;37141:2;37130:9;37126:18;37118:26;;37154:71;37222:1;37211:9;37207:17;37198:6;37154:71;:::i;:::-;37235:72;37303:2;37292:9;37288:18;37279:6;37235:72;:::i;:::-;37317;37385:2;37374:9;37370:18;37361:6;37317:72;:::i;:::-;36954:442;;;;;;:::o;37402:180::-;37450:77;37447:1;37440:88;37547:4;37544:1;37537:15;37571:4;37568:1;37561:15;37588:143;37645:5;37676:6;37670:13;37661:22;;37692:33;37719:5;37692:33;:::i;:::-;37588:143;;;;:::o;37737:351::-;37807:6;37856:2;37844:9;37835:7;37831:23;37827:32;37824:119;;;37862:79;;:::i;:::-;37824:119;37982:1;38007:64;38063:7;38054:6;38043:9;38039:22;38007:64;:::i;:::-;37997:74;;37953:128;37737:351;;;;:::o;38094:85::-;38139:7;38168:5;38157:16;;38094:85;;;:::o;38185:158::-;38243:9;38276:61;38294:42;38303:32;38329:5;38303:32;:::i;:::-;38294:42;:::i;:::-;38276:61;:::i;:::-;38263:74;;38185:158;;;:::o;38349:147::-;38444:45;38483:5;38444:45;:::i;:::-;38439:3;38432:58;38349:147;;:::o;38502:114::-;38569:6;38603:5;38597:12;38587:22;;38502:114;;;:::o;38622:184::-;38721:11;38755:6;38750:3;38743:19;38795:4;38790:3;38786:14;38771:29;;38622:184;;;;:::o;38812:132::-;38879:4;38902:3;38894:11;;38932:4;38927:3;38923:14;38915:22;;38812:132;;;:::o;38950:108::-;39027:24;39045:5;39027:24;:::i;:::-;39022:3;39015:37;38950:108;;:::o;39064:179::-;39133:10;39154:46;39196:3;39188:6;39154:46;:::i;:::-;39232:4;39227:3;39223:14;39209:28;;39064:179;;;;:::o;39249:113::-;39319:4;39351;39346:3;39342:14;39334:22;;39249:113;;;:::o;39398:732::-;39517:3;39546:54;39594:5;39546:54;:::i;:::-;39616:86;39695:6;39690:3;39616:86;:::i;:::-;39609:93;;39726:56;39776:5;39726:56;:::i;:::-;39805:7;39836:1;39821:284;39846:6;39843:1;39840:13;39821:284;;;39922:6;39916:13;39949:63;40008:3;39993:13;39949:63;:::i;:::-;39942:70;;40035:60;40088:6;40035:60;:::i;:::-;40025:70;;39881:224;39868:1;39865;39861:9;39856:14;;39821:284;;;39825:14;40121:3;40114:10;;39522:608;;;39398:732;;;;:::o;40136:831::-;40399:4;40437:3;40426:9;40422:19;40414:27;;40451:71;40519:1;40508:9;40504:17;40495:6;40451:71;:::i;:::-;40532:80;40608:2;40597:9;40593:18;40584:6;40532:80;:::i;:::-;40659:9;40653:4;40649:20;40644:2;40633:9;40629:18;40622:48;40687:108;40790:4;40781:6;40687:108;:::i;:::-;40679:116;;40805:72;40873:2;40862:9;40858:18;40849:6;40805:72;:::i;:::-;40887:73;40955:3;40944:9;40940:19;40931:6;40887:73;:::i;:::-;40136:831;;;;;;;;:::o;40973:807::-;41222:4;41260:3;41249:9;41245:19;41237:27;;41274:71;41342:1;41331:9;41327:17;41318:6;41274:71;:::i;:::-;41355:72;41423:2;41412:9;41408:18;41399:6;41355:72;:::i;:::-;41437:80;41513:2;41502:9;41498:18;41489:6;41437:80;:::i;:::-;41527;41603:2;41592:9;41588:18;41579:6;41527:80;:::i;:::-;41617:73;41685:3;41674:9;41670:19;41661:6;41617:73;:::i;:::-;41700;41768:3;41757:9;41753:19;41744:6;41700:73;:::i;:::-;40973:807;;;;;;;;;:::o;41786:663::-;41874:6;41882;41890;41939:2;41927:9;41918:7;41914:23;41910:32;41907:119;;;41945:79;;:::i;:::-;41907:119;42065:1;42090:64;42146:7;42137:6;42126:9;42122:22;42090:64;:::i;:::-;42080:74;;42036:128;42203:2;42229:64;42285:7;42276:6;42265:9;42261:22;42229:64;:::i;:::-;42219:74;;42174:129;42342:2;42368:64;42424:7;42415:6;42404:9;42400:22;42368:64;:::i;:::-;42358:74;;42313:129;41786:663;;;;;:::o

Swarm Source

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