ETH Price: $3,531.86 (+4.27%)
Gas: 7.09 Gwei

Token

Bionic Bunny (SEXY)
 

Overview

Max Total Supply

260,000,000,000 SEXY

Holders

84

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
13,017,426.10358201068889454 SEXY

Value
$0.00
0x3f663526ae2374f5687812Aa344b37cdA4fdcb8E
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:
BionicBunny

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 *Submitted for verification at Etherscan.io on 2023-06-21
*/

// SPDX-License-Identifier: UNLICENCED

pragma solidity ^0.8.2;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function burn(uint256 amount) external returns (bool);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

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

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

abstract contract Pausable is Context {
    event Paused(address account);
    event Unpaused(address account);
    bool private _paused;

    constructor() {
        _paused = false;
    }

    function paused() public view virtual returns (bool) {
        return _paused;
    }

    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

abstract contract Ownable is Context, Pausable {
    address private _owner;

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

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

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

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

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data)
        internal
        view
        returns (bytes memory)
    {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    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(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 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 (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

contract BionicBunny is Context, IERC20, IERC20Metadata, Pausable, Ownable {
    using Address for address;

    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcluded;
    mapping(address => bool) public _isExcludedFromDexFee;

    uint256 private _tTotal = 420000000000 * 10**18;

    string private constant _name = "Bionic Bunny";
    string private constant _symbol = "SEXY";
    uint8 private constant _decimals = 18;

    address public marketingWallet;

    uint256 public marketingFee = 4;
    uint256 private previousTotalSwapFee = marketingFee;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;

    address constant UNISWAPV2ROUTER =0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public managerAddress = 0xa5ab12402c31f1Bd777ad9E33b1fC24A19F3AB5f;

    bool public enableFee;
    bool private swapFeeToEth;
    bool public marketingswapEnabled = true;

    //bool public taxDisableInLiquidity;

    uint256 public minimumTokensBeforeSwap = 1000000000 * 10**18;

    event FeeEnabled(bool enableFee);
    event SetMaxTxPercent(uint256 maxPercent);
    event ManagerUpdated(address indexed newManager);
    event SetMarketingFeePercent(uint256 marketingFeePercent);
    event SetMinimumTokensBeforeSwap(uint256 minimumTokensBeforeSwap);
    event SetMarketingSwapEnabled(bool enabled);
    event EnableFees(bool marketingfeeenabled);
    event TokenFromContractTransfered(
        address externalAddress,
        address toAddress,
        uint256 amount
    );
    event EthFromContractTransferred(uint256 amount);

    constructor(address _marketingWallet) {
        _tOwned[_msgSender()] = _tTotal;
        marketingWallet = _marketingWallet;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            UNISWAPV2ROUTER
        );
        // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

    function decimals() external view virtual override returns (uint8) {
        return _decimals;
    }

    function totalSupply() external view virtual override returns (uint256) {
        return _tTotal;
    }

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

    function isExcludedFromDexFee(address account)
        external
        view
        returns (bool)
    {
        return _isExcludedFromDexFee[account];
    }

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }
    
    modifier onlyManager() {
        require(msg.sender == managerAddress, "Only the manager can call this function.");
        _;
    }

    function setManager(address newManager) external onlyOwner {
        require(newManager != address(0), "Invalid manager address.");
        require(newManager != managerAddress, "New manager address must be different from the current manager address.");
        managerAddress = newManager;
        emit ManagerUpdated(newManager);
    }

    function pauseContract() external virtual onlyOwner {
        _pause();
    }

    function unPauseContract() external virtual onlyOwner {
        _unpause();
    }

    function burn(uint256 amount)
        external
        virtual
        override
        onlyOwner
        whenNotPaused
        returns (bool)
    {
        _burn(_msgSender(), amount);
        return true;
    }

    function excludeFromDexFee(address account)
        external
        onlyOwner
        whenNotPaused
    {
        _isExcludedFromDexFee[account] = true;
    }

    function includeInDexFee(address account) external onlyOwner whenNotPaused {
        _isExcludedFromDexFee[account] = false;
    }

    function setMarketingFeePercent(uint256 fee)
        external
        onlyOwner
        whenNotPaused
    {
        marketingFee = fee;
        emit SetMarketingFeePercent(marketingFee);
    }

    function enableswap(bool marketingfeeenabled)
        external
        onlyOwner
        whenNotPaused
    {
        marketingswapEnabled = marketingfeeenabled;
        emit EnableFees(marketingswapEnabled);
    }

    function setMinimumTokensBeforeSwap(uint256 swapLimit)
        external
        onlyOwner
        whenNotPaused
    {
        minimumTokensBeforeSwap = swapLimit;
        emit SetMinimumTokensBeforeSwap(minimumTokensBeforeSwap);
    }

    function setEnableFee(bool enableTax) external onlyOwner whenNotPaused {
        enableFee = enableTax;
        emit FeeEnabled(enableTax);
    }

    function withdrawToken(address _tokenContract, uint256 _amount)
        external
        onlyManager
        whenNotPaused
    {
        require(_tokenContract != address(0), "Address cant be zero address");
        IERC20 tokenContract = IERC20(_tokenContract);
        tokenContract.transfer(msg.sender, _amount);
        emit TokenFromContractTransfered(_tokenContract, msg.sender, _amount);
    }

    function withdrawETH() external payable onlyManager {
        payable(msg.sender).transfer(address(this).balance);
    }

    //to recieve Eth from uniswapV2Router when swaping
    receive() external payable {}

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

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

        uint256 senderBalance = balanceOf(from);
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );

        //indicates if fee should be deducted from transfer
        bool takeFee = false;

        if (!swapFeeToEth && from != uniswapV2Pair) distributeFee();

        // If UniSwap buy sell's only contract should take taxation.
        if (
            enableFee &&
            (from == uniswapV2Pair || to == uniswapV2Pair) &&
            (!_isExcludedFromDexFee[from] || !_isExcludedFromDexFee[to])
        ) takeFee = true;

        //transfer amount, it will take tax, burn and charity amount
        _tokenTransfer(from, to, amount, takeFee);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        require(
            amount < balanceOf(account),
            "ERC20: burn amount exceeds balance"
        );

        _tTotal = _tTotal - amount;

        _tOwned[account] = _tOwned[account] - amount;

        emit Transfer(account, address(0), amount);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) internal {
        if (!takeFee) removeAllFee();

        _transfermain(sender, recipient, amount);

        if (!takeFee) restoreAllFee();
    }

    function _transfermain(
        address sender,
        address recipient,
        uint256 tAmount
    ) internal {
        (uint256 tTransferAmount, uint256 tSwapFee) = getTValues(tAmount);

        {
            address from = sender;
            address to = recipient;
            _tOwned[from] = _tOwned[from] - tAmount;
            _tOwned[to] = _tOwned[to] + tTransferAmount;
        }
        takeSwapFee(sender, tSwapFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function getTValues(uint256 amount)
        internal
        view
        returns (uint256, uint256)
    {
        uint256 tAmount = amount;
        uint256 tSwapFee = calculateSwapFee(tAmount);
        uint256 tTransferAmount = tAmount - tSwapFee;
        return (tTransferAmount, tSwapFee);
    }

    function calculateSwapFee(uint256 _amount) internal view returns (uint256) {
        return (_amount * (marketingFee)) / (10**2);
    }

    function takeSwapFee(address sender, uint256 tSwapFee) internal {
        _tOwned[address(this)] = _tOwned[address(this)] + tSwapFee;

        if (tSwapFee > 0) emit Transfer(sender, address(this), tSwapFee);
    }

    function removeAllFee() internal {
        if (marketingFee == 0) return;

        previousTotalSwapFee = marketingFee;
        marketingFee = 0;
    }

    function restoreAllFee() internal {
        marketingFee = previousTotalSwapFee;
    }

    function distributeFee() internal {
        uint256 initialBalance = address(this).balance;
        uint256 contractTokenBalance = balanceOf(address(this));

        if (contractTokenBalance >= minimumTokensBeforeSwap) {
            bool initialFeeState = enableFee;
            // remove fee if initialFeeState was true
            if (initialFeeState) enableFee = false;
            swapFeeToEth = true;

            // swap tokens in contract address to eth
            swapTokensForEth(contractTokenBalance, address(this));
            uint256 transferredBalance = address(this).balance - initialBalance;

            // Send Eth to Marketing address
            if (marketingswapEnabled)
                transferETHToAddress(
                    payable(marketingWallet),
                    transferredBalance);

            // enable fee if initialFeeState was true
            if (initialFeeState) enableFee = true;
            swapFeeToEth = false;
        }
    }

    function distributeFeeNow() external onlyManager {
        uint256 initialBalance = address(this).balance;
        uint256 contractTokenBalance = balanceOf(address(this));

        bool initialFeeState = enableFee;
        // remove fee if initialFeeState was true
        if (initialFeeState) enableFee = false;

        swapFeeToEth = true;

        // swap tokens in contract address to eth
        swapTokensForEth(contractTokenBalance, address(this));
        uint256 transferredBalance = address(this).balance - initialBalance;

        // Send Eth to Marketing address
         if (marketingswapEnabled)
                transferETHToAddress(
                    payable(marketingWallet),
                    transferredBalance);

        // enable fee if initialFeeState was true
        if (initialFeeState) enableFee = true;
        swapFeeToEth = false;
    }

    function transferETHToAddress(address payable recipient, uint256 amount)
        internal
    {
        recipient.transfer(amount);
    }

    function swapTokensForEth(uint256 tokenAmount, address account) internal {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketingWallet","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":false,"internalType":"bool","name":"marketingfeeenabled","type":"bool"}],"name":"EnableFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EthFromContractTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enableFee","type":"bool"}],"name":"FeeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newManager","type":"address"}],"name":"ManagerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingFeePercent","type":"uint256"}],"name":"SetMarketingFeePercent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SetMarketingSwapEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxPercent","type":"uint256"}],"name":"SetMaxTxPercent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minimumTokensBeforeSwap","type":"uint256"}],"name":"SetMinimumTokensBeforeSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"externalAddress","type":"address"},{"indexed":false,"internalType":"address","name":"toAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenFromContractTransfered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromDexFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"distributeFeeNow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"marketingfeeenabled","type":"bool"}],"name":"enableswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromDexFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInDexFee","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":"account","type":"address"}],"name":"isExcludedFromDexFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"managerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingswapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","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":"pauseContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableTax","type":"bool"}],"name":"setEnableFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newManager","type":"address"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setMarketingFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapLimit","type":"uint256"}],"name":"setMinimumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unPauseContract","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":[],"name":"withdrawETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526c054d17db76321263eca0000000600555600460075560075460085573a5ab12402c31f1bd777ad9e33b1fc24a19f3ab5f600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60166101000a81548160ff0219169083151502179055506b033b2e3c9fd0803ce8000000600b55348015620000ab575f80fd5b5060405162004801380380620048018339818101604052810190620000d19190620004ff565b5f805f6101000a81548160ff0219169083151502179055505f620000fa6200049360201b60201c565b9050805f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060055460015f620001ad6200049360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200028c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002b29190620004ff565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000318573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200033e9190620004ff565b6040518363ffffffff1660e01b81526004016200035d92919062000540565b6020604051808303815f875af11580156200037a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003a09190620004ff565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050620004236200049360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60055460405162000483919062000585565b60405180910390a35050620005a0565b5f33905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620004c9826200049e565b9050919050565b620004db81620004bd565b8114620004e6575f80fd5b50565b5f81519050620004f981620004d0565b92915050565b5f602082840312156200051757620005166200049a565b5b5f6200052684828501620004e9565b91505092915050565b6200053a81620004bd565b82525050565b5f604082019050620005555f8301856200052f565b6200056460208301846200052f565b9392505050565b5f819050919050565b6200057f816200056b565b82525050565b5f6020820190506200059a5f83018462000574565b92915050565b608051614233620005ce5f395f8181610a6c015281816127e7015281816128c601526128ed01526142335ff3fe608060405260043610610228575f3560e01c806375f0a87411610122578063bac15203116100aa578063d8e002711161006e578063d8e00271146107e3578063dd62ed3e1461080b578063e086e5ec14610847578063f2fde38b14610851578063fd7eedf5146108795761022f565b8063bac1520314610729578063bdb8dd471461073f578063cf73a1bc14610767578063d0ebdbe714610791578063d2d7ad83146107b95761022f565b80639e281a98116100f15780639e281a9814610625578063a457c2d71461064d578063a9059cbb14610689578063ac5c5c11146106c5578063aee50b1e146107015761022f565b806375f0a8741461057d5780638da5cb5b146105a757806395d89b41146105d15780639807c5a5146105fb5761022f565b806339509351116101b05780635c975abb116101745780635c975abb1461049b57806360ba1c3e146104c55780636b67c4df1461050157806370a082311461052b578063715018a6146105675761022f565b806339509351146103bb57806342966c68146103f7578063439766ce14610433578063457c194c1461044957806349bd5a5e146104715761022f565b806318160ddd116101f757806318160ddd146102eb57806323b872dd146103155780632a3e273e1461035157806330d2091d14610367578063313ce567146103915761022f565b806306fdde0314610233578063095ea7b31461025d5780630a3890ee146102995780631694505e146102c15761022f565b3661022f57005b5f80fd5b34801561023e575f80fd5b506102476108a1565b6040516102549190613199565b60405180910390f35b348015610268575f80fd5b50610283600480360381019061027e919061324a565b6108de565b60405161029091906132a2565b60405180910390f35b3480156102a4575f80fd5b506102bf60048036038101906102ba91906132e5565b610943565b005b3480156102cc575f80fd5b506102d5610a6a565b6040516102e2919061336b565b60405180910390f35b3480156102f6575f80fd5b506102ff610a8e565b60405161030c9190613393565b60405180910390f35b348015610320575f80fd5b5061033b600480360381019061033691906133ac565b610a97565b60405161034891906132a2565b60405180910390f35b34801561035c575f80fd5b50610365610bda565b005b348015610372575f80fd5b5061037b610d64565b60405161038891906132a2565b60405180910390f35b34801561039c575f80fd5b506103a5610d77565b6040516103b29190613417565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc919061324a565b610d7f565b6040516103ee91906132a2565b60405180910390f35b348015610402575f80fd5b5061041d60048036038101906104189190613430565b610e6e565b60405161042a91906132a2565b60405180910390f35b34801561043e575f80fd5b50610447610f4d565b005b348015610454575f80fd5b5061046f600480360381019061046a9190613430565b610fd3565b005b34801561047c575f80fd5b506104856110da565b604051610492919061346a565b60405180910390f35b3480156104a6575f80fd5b506104af6110ff565b6040516104bc91906132a2565b60405180910390f35b3480156104d0575f80fd5b506104eb60048036038101906104e69190613483565b611113565b6040516104f891906132a2565b60405180910390f35b34801561050c575f80fd5b50610515611165565b6040516105229190613393565b60405180910390f35b348015610536575f80fd5b50610551600480360381019061054c9190613483565b61116b565b60405161055e9190613393565b60405180910390f35b348015610572575f80fd5b5061057b6111b1565b005b348015610588575f80fd5b50610591611332565b60405161059e919061346a565b60405180910390f35b3480156105b2575f80fd5b506105bb611357565b6040516105c8919061346a565b60405180910390f35b3480156105dc575f80fd5b506105e561137f565b6040516105f29190613199565b60405180910390f35b348015610606575f80fd5b5061060f6113bc565b60405161061c91906132a2565b60405180910390f35b348015610630575f80fd5b5061064b6004803603810190610646919061324a565b6113cf565b005b348015610658575f80fd5b50610673600480360381019061066e919061324a565b6115d4565b60405161068091906132a2565b60405180910390f35b348015610694575f80fd5b506106af60048036038101906106aa919061324a565b611702565b6040516106bc91906132a2565b60405180910390f35b3480156106d0575f80fd5b506106eb60048036038101906106e69190613483565b611767565b6040516106f891906132a2565b60405180910390f35b34801561070c575f80fd5b5061072760048036038101906107229190613430565b611784565b005b348015610734575f80fd5b5061073d61188b565b005b34801561074a575f80fd5b5061076560048036038101906107609190613483565b611911565b005b348015610772575f80fd5b5061077b611a2d565b604051610788919061346a565b60405180910390f35b34801561079c575f80fd5b506107b760048036038101906107b29190613483565b611a52565b005b3480156107c4575f80fd5b506107cd611c51565b6040516107da9190613393565b60405180910390f35b3480156107ee575f80fd5b50610809600480360381019061080491906132e5565b611c57565b005b348015610816575f80fd5b50610831600480360381019061082c91906134ae565b611d6f565b60405161083e9190613393565b60405180910390f35b61084f611e39565b005b34801561085c575f80fd5b5061087760048036038101906108729190613483565b611f0e565b005b348015610884575f80fd5b5061089f600480360381019061089a9190613483565b6120fe565b005b60606040518060400160405280600c81526020017f42696f6e69632042756e6e790000000000000000000000000000000000000000815250905090565b5f6108e76110ff565b15610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091e90613536565b60405180910390fd5b610939610932612219565b8484612220565b6001905092915050565b61094b612219565b73ffffffffffffffffffffffffffffffffffffffff16610969611357565b73ffffffffffffffffffffffffffffffffffffffff16146109bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b69061359e565b60405180910390fd5b6109c76110ff565b15610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fe90613536565b60405180910390fd5b80600a60166101000a81548160ff0219169083151502179055507fbe9e7a475b5e837d3520eb528f8f8b34ce6f9fd8edff27d7b2117015df627cf2600a60169054906101000a900460ff16604051610a5f91906132a2565b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600554905090565b5f610aa06110ff565b15610ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad790613536565b60405180910390fd5b610aeb8484846123e3565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b32612219565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba89061362c565b60405180910390fd5b610bce85610bbd612219565b8584610bc99190613677565b612220565b60019150509392505050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c609061371a565b60405180910390fd5b5f4790505f610c773061116b565b90505f600a60149054906101000a900460ff1690508015610cad575f600a60146101000a81548160ff0219169083151502179055505b6001600a60156101000a81548160ff021916908315150217905550610cd2823061274a565b5f8347610cdf9190613677565b9050600a60169054906101000a900460ff1615610d2257610d2160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261297e565b5b8115610d44576001600a60146101000a81548160ff0219169083151502179055505b5f600a60156101000a81548160ff02191690831515021790555050505050565b600a60149054906101000a900460ff1681565b5f6012905090565b5f610d886110ff565b15610dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbf90613536565b60405180910390fd5b610e64610dd3612219565b848460025f610de0612219565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e5f9190613738565b612220565b6001905092915050565b5f610e77612219565b73ffffffffffffffffffffffffffffffffffffffff16610e95611357565b73ffffffffffffffffffffffffffffffffffffffff1614610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee29061359e565b60405180910390fd5b610ef36110ff565b15610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a90613536565b60405180910390fd5b610f44610f3e612219565b836129c6565b60019050919050565b610f55612219565b73ffffffffffffffffffffffffffffffffffffffff16610f73611357565b73ffffffffffffffffffffffffffffffffffffffff1614610fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc09061359e565b60405180910390fd5b610fd1612b85565b565b610fdb612219565b73ffffffffffffffffffffffffffffffffffffffff16610ff9611357565b73ffffffffffffffffffffffffffffffffffffffff161461104f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110469061359e565b60405180910390fd5b6110576110ff565b15611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90613536565b60405180910390fd5b806007819055507f1d119ab266e8f5d0a034bbe24b820e3856d15a1da4d0a3c0ae2889658e6367476007546040516110cf9190613393565b60405180910390a150565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f9054906101000a900460ff16905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60075481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6111b9612219565b73ffffffffffffffffffffffffffffffffffffffff166111d7611357565b73ffffffffffffffffffffffffffffffffffffffff161461122d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112249061359e565b60405180910390fd5b6112356110ff565b15611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126c90613536565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f8060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f5345585900000000000000000000000000000000000000000000000000000000815250905090565b600a60169054906101000a900460ff1681565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461145e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114559061371a565b60405180910390fd5b6114666110ff565b156114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90613536565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b906137b5565b60405180910390fd5b5f8290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016115539291906137d3565b6020604051808303815f875af115801561156f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611593919061380e565b507fe24b911c10a799187fef8c4636296be03b90a31bab258364251ad2bcd11853ff8333846040516115c793929190613839565b60405180910390a1505050565b5f6115dd6110ff565b1561161d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161490613536565b60405180910390fd5b5f60025f611629612219565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da906138de565b60405180910390fd5b6116f76116ee612219565b85858403612220565b600191505092915050565b5f61170b6110ff565b1561174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290613536565b60405180910390fd5b61175d611756612219565b84846123e3565b6001905092915050565b6004602052805f5260405f205f915054906101000a900460ff1681565b61178c612219565b73ffffffffffffffffffffffffffffffffffffffff166117aa611357565b73ffffffffffffffffffffffffffffffffffffffff1614611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f79061359e565b60405180910390fd5b6118086110ff565b15611848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183f90613536565b60405180910390fd5b80600b819055507f430549ae112d6c6db3cbf57ab09d2c3f3ef8393ffe6c918d5dbfaaedae610412600b546040516118809190613393565b60405180910390a150565b611893612219565b73ffffffffffffffffffffffffffffffffffffffff166118b1611357565b73ffffffffffffffffffffffffffffffffffffffff1614611907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fe9061359e565b60405180910390fd5b61190f612c26565b565b611919612219565b73ffffffffffffffffffffffffffffffffffffffff16611937611357565b73ffffffffffffffffffffffffffffffffffffffff161461198d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119849061359e565b60405180910390fd5b6119956110ff565b156119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc90613536565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a5a612219565b73ffffffffffffffffffffffffffffffffffffffff16611a78611357565b73ffffffffffffffffffffffffffffffffffffffff1614611ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac59061359e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3390613946565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc2906139fa565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d60405160405180910390a250565b600b5481565b611c5f612219565b73ffffffffffffffffffffffffffffffffffffffff16611c7d611357565b73ffffffffffffffffffffffffffffffffffffffff1614611cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cca9061359e565b60405180910390fd5b611cdb6110ff565b15611d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1290613536565b60405180910390fd5b80600a60146101000a81548160ff0219169083151502179055507fe97fa32ceb811a18d1b14115b17ae0034db328b2e2ca987d9922cbf47b03fad681604051611d6491906132a2565b60405180910390a150565b5f611d786110ff565b15611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf90613536565b60405180910390fd5b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebf9061371a565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611f0b573d5f803e3d5ffd5b50565b611f16612219565b73ffffffffffffffffffffffffffffffffffffffff16611f34611357565b73ffffffffffffffffffffffffffffffffffffffff1614611f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f819061359e565b60405180910390fd5b611f926110ff565b15611fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc990613536565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203790613a88565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612106612219565b73ffffffffffffffffffffffffffffffffffffffff16612124611357565b73ffffffffffffffffffffffffffffffffffffffff161461217a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121719061359e565b60405180910390fd5b6121826110ff565b156121c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b990613536565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361228e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228590613b16565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f390613ba4565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123d69190613393565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244890613c32565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b690613cc0565b60405180910390fd5b5f8111612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f890613d4e565b60405180910390fd5b5f61250b8461116b565b905081811015612550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254790613ddc565b60405180910390fd5b5f600a60159054906101000a900460ff161580156125bb575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156125c9576125c8612cc5565b5b600a60149054906101000a900460ff168015612688575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612687575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b5b801561272d575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158061272c575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b5b1561273757600190505b61274385858584612dca565b5050505050565b5f600267ffffffffffffffff81111561276657612765613dfa565b5b6040519080825280602002602001820160405280156127945781602001602082028036833780820191505090505b50905030815f815181106127ab576127aa613e27565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561284e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128729190613e68565b8160018151811061288657612885613e27565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128eb307f000000000000000000000000000000000000000000000000000000000000000085612220565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8486426040518663ffffffff1660e01b815260040161294c959493929190613f83565b5f604051808303815f87803b158015612963575f80fd5b505af1158015612975573d5f803e3d5ffd5b50505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156129c1573d5f803e3d5ffd5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2b9061404b565b60405180910390fd5b612a3d8261116b565b8110612a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a75906140d9565b60405180910390fd5b80600554612a8c9190613677565b6005819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612adb9190613677565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b799190613393565b60405180910390a35050565b612b8d6110ff565b15612bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc490613536565b60405180910390fd5b60015f806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612c0f612219565b604051612c1c919061346a565b60405180910390a1565b612c2e6110ff565b612c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6490614141565b60405180910390fd5b5f805f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612cae612219565b604051612cbb919061346a565b60405180910390a1565b5f4790505f612cd33061116b565b9050600b548110612dc6575f600a60149054906101000a900460ff1690508015612d12575f600a60146101000a81548160ff0219169083151502179055505b6001600a60156101000a81548160ff021916908315150217905550612d37823061274a565b5f8347612d449190613677565b9050600a60169054906101000a900460ff1615612d8757612d8660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261297e565b5b8115612da9576001600a60146101000a81548160ff0219169083151502179055505b5f600a60156101000a81548160ff02191690831515021790555050505b5050565b80612dd857612dd7612df7565b5b612de3848484612e14565b80612df157612df0612fb7565b5b50505050565b5f6007540315612e12576007546008819055505f6007819055505b565b5f80612e1f83612fc2565b915091505f8590505f8590508460015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e749190613677565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508360015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612efe9190613738565b60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050612f4b8582612ff1565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612fa89190613393565b60405180910390a35050505050565b600854600781905550565b5f805f8390505f612fd2826130ed565b90505f8183612fe19190613677565b9050808294509450505050915091565b8060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461303a9190613738565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8111156130e9573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130e09190613393565b60405180910390a35b5050565b5f6064600754836130fe919061415f565b61310891906141cd565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561314657808201518184015260208101905061312b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61316b8261310f565b6131758185613119565b9350613185818560208601613129565b61318e81613151565b840191505092915050565b5f6020820190508181035f8301526131b18184613161565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6131e6826131bd565b9050919050565b6131f6816131dc565b8114613200575f80fd5b50565b5f81359050613211816131ed565b92915050565b5f819050919050565b61322981613217565b8114613233575f80fd5b50565b5f8135905061324481613220565b92915050565b5f80604083850312156132605761325f6131b9565b5b5f61326d85828601613203565b925050602061327e85828601613236565b9150509250929050565b5f8115159050919050565b61329c81613288565b82525050565b5f6020820190506132b55f830184613293565b92915050565b6132c481613288565b81146132ce575f80fd5b50565b5f813590506132df816132bb565b92915050565b5f602082840312156132fa576132f96131b9565b5b5f613307848285016132d1565b91505092915050565b5f819050919050565b5f61333361332e613329846131bd565b613310565b6131bd565b9050919050565b5f61334482613319565b9050919050565b5f6133558261333a565b9050919050565b6133658161334b565b82525050565b5f60208201905061337e5f83018461335c565b92915050565b61338d81613217565b82525050565b5f6020820190506133a65f830184613384565b92915050565b5f805f606084860312156133c3576133c26131b9565b5b5f6133d086828701613203565b93505060206133e186828701613203565b92505060406133f286828701613236565b9150509250925092565b5f60ff82169050919050565b613411816133fc565b82525050565b5f60208201905061342a5f830184613408565b92915050565b5f60208284031215613445576134446131b9565b5b5f61345284828501613236565b91505092915050565b613464816131dc565b82525050565b5f60208201905061347d5f83018461345b565b92915050565b5f60208284031215613498576134976131b9565b5b5f6134a584828501613203565b91505092915050565b5f80604083850312156134c4576134c36131b9565b5b5f6134d185828601613203565b92505060206134e285828601613203565b9150509250929050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f613520601083613119565b915061352b826134ec565b602082019050919050565b5f6020820190508181035f83015261354d81613514565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613588602083613119565b915061359382613554565b602082019050919050565b5f6020820190508181035f8301526135b58161357c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613616602883613119565b9150613621826135bc565b604082019050919050565b5f6020820190508181035f8301526136438161360a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61368182613217565b915061368c83613217565b92508282039050818111156136a4576136a361364a565b5b92915050565b7f4f6e6c7920746865206d616e616765722063616e2063616c6c207468697320665f8201527f756e6374696f6e2e000000000000000000000000000000000000000000000000602082015250565b5f613704602883613119565b915061370f826136aa565b604082019050919050565b5f6020820190508181035f830152613731816136f8565b9050919050565b5f61374282613217565b915061374d83613217565b92508282019050808211156137655761376461364a565b5b92915050565b7f416464726573732063616e74206265207a65726f2061646472657373000000005f82015250565b5f61379f601c83613119565b91506137aa8261376b565b602082019050919050565b5f6020820190508181035f8301526137cc81613793565b9050919050565b5f6040820190506137e65f83018561345b565b6137f36020830184613384565b9392505050565b5f81519050613808816132bb565b92915050565b5f60208284031215613823576138226131b9565b5b5f613830848285016137fa565b91505092915050565b5f60608201905061384c5f83018661345b565b613859602083018561345b565b6138666040830184613384565b949350505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6138c8602583613119565b91506138d38261386e565b604082019050919050565b5f6020820190508181035f8301526138f5816138bc565b9050919050565b7f496e76616c6964206d616e6167657220616464726573732e00000000000000005f82015250565b5f613930601883613119565b915061393b826138fc565b602082019050919050565b5f6020820190508181035f83015261395d81613924565b9050919050565b7f4e6577206d616e616765722061646472657373206d75737420626520646966665f8201527f6572656e742066726f6d207468652063757272656e74206d616e61676572206160208201527f6464726573732e00000000000000000000000000000000000000000000000000604082015250565b5f6139e4604783613119565b91506139ef82613964565b606082019050919050565b5f6020820190508181035f830152613a11816139d8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613a72602683613119565b9150613a7d82613a18565b604082019050919050565b5f6020820190508181035f830152613a9f81613a66565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613b00602483613119565b9150613b0b82613aa6565b604082019050919050565b5f6020820190508181035f830152613b2d81613af4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b8e602283613119565b9150613b9982613b34565b604082019050919050565b5f6020820190508181035f830152613bbb81613b82565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613c1c602583613119565b9150613c2782613bc2565b604082019050919050565b5f6020820190508181035f830152613c4981613c10565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613caa602383613119565b9150613cb582613c50565b604082019050919050565b5f6020820190508181035f830152613cd781613c9e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613d38602983613119565b9150613d4382613cde565b604082019050919050565b5f6020820190508181035f830152613d6581613d2c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613dc6602683613119565b9150613dd182613d6c565b604082019050919050565b5f6020820190508181035f830152613df381613dba565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613e62816131ed565b92915050565b5f60208284031215613e7d57613e7c6131b9565b5b5f613e8a84828501613e54565b91505092915050565b5f819050919050565b5f613eb6613eb1613eac84613e93565b613310565b613217565b9050919050565b613ec681613e9c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613efe816131dc565b82525050565b5f613f0f8383613ef5565b60208301905092915050565b5f602082019050919050565b5f613f3182613ecc565b613f3b8185613ed6565b9350613f4683613ee6565b805f5b83811015613f76578151613f5d8882613f04565b9750613f6883613f1b565b925050600181019050613f49565b5085935050505092915050565b5f60a082019050613f965f830188613384565b613fa36020830187613ebd565b8181036040830152613fb58186613f27565b9050613fc4606083018561345b565b613fd16080830184613384565b9695505050505050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f614035602183613119565b915061404082613fdb565b604082019050919050565b5f6020820190508181035f83015261406281614029565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140c3602283613119565b91506140ce82614069565b604082019050919050565b5f6020820190508181035f8301526140f0816140b7565b9050919050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f61412b601483613119565b9150614136826140f7565b602082019050919050565b5f6020820190508181035f8301526141588161411f565b9050919050565b5f61416982613217565b915061417483613217565b925082820261418281613217565b915082820484148315176141995761419861364a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6141d782613217565b91506141e283613217565b9250826141f2576141f16141a0565b5b82820490509291505056fea2646970667358221220dbd8f536c18465e78ef117cdf9a842847b21bbae1d46e4182db64200a7fcc3a464736f6c634300081400330000000000000000000000001313ae68339b7a8655f53eeaa07d0d6092747800

Deployed Bytecode

0x608060405260043610610228575f3560e01c806375f0a87411610122578063bac15203116100aa578063d8e002711161006e578063d8e00271146107e3578063dd62ed3e1461080b578063e086e5ec14610847578063f2fde38b14610851578063fd7eedf5146108795761022f565b8063bac1520314610729578063bdb8dd471461073f578063cf73a1bc14610767578063d0ebdbe714610791578063d2d7ad83146107b95761022f565b80639e281a98116100f15780639e281a9814610625578063a457c2d71461064d578063a9059cbb14610689578063ac5c5c11146106c5578063aee50b1e146107015761022f565b806375f0a8741461057d5780638da5cb5b146105a757806395d89b41146105d15780639807c5a5146105fb5761022f565b806339509351116101b05780635c975abb116101745780635c975abb1461049b57806360ba1c3e146104c55780636b67c4df1461050157806370a082311461052b578063715018a6146105675761022f565b806339509351146103bb57806342966c68146103f7578063439766ce14610433578063457c194c1461044957806349bd5a5e146104715761022f565b806318160ddd116101f757806318160ddd146102eb57806323b872dd146103155780632a3e273e1461035157806330d2091d14610367578063313ce567146103915761022f565b806306fdde0314610233578063095ea7b31461025d5780630a3890ee146102995780631694505e146102c15761022f565b3661022f57005b5f80fd5b34801561023e575f80fd5b506102476108a1565b6040516102549190613199565b60405180910390f35b348015610268575f80fd5b50610283600480360381019061027e919061324a565b6108de565b60405161029091906132a2565b60405180910390f35b3480156102a4575f80fd5b506102bf60048036038101906102ba91906132e5565b610943565b005b3480156102cc575f80fd5b506102d5610a6a565b6040516102e2919061336b565b60405180910390f35b3480156102f6575f80fd5b506102ff610a8e565b60405161030c9190613393565b60405180910390f35b348015610320575f80fd5b5061033b600480360381019061033691906133ac565b610a97565b60405161034891906132a2565b60405180910390f35b34801561035c575f80fd5b50610365610bda565b005b348015610372575f80fd5b5061037b610d64565b60405161038891906132a2565b60405180910390f35b34801561039c575f80fd5b506103a5610d77565b6040516103b29190613417565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc919061324a565b610d7f565b6040516103ee91906132a2565b60405180910390f35b348015610402575f80fd5b5061041d60048036038101906104189190613430565b610e6e565b60405161042a91906132a2565b60405180910390f35b34801561043e575f80fd5b50610447610f4d565b005b348015610454575f80fd5b5061046f600480360381019061046a9190613430565b610fd3565b005b34801561047c575f80fd5b506104856110da565b604051610492919061346a565b60405180910390f35b3480156104a6575f80fd5b506104af6110ff565b6040516104bc91906132a2565b60405180910390f35b3480156104d0575f80fd5b506104eb60048036038101906104e69190613483565b611113565b6040516104f891906132a2565b60405180910390f35b34801561050c575f80fd5b50610515611165565b6040516105229190613393565b60405180910390f35b348015610536575f80fd5b50610551600480360381019061054c9190613483565b61116b565b60405161055e9190613393565b60405180910390f35b348015610572575f80fd5b5061057b6111b1565b005b348015610588575f80fd5b50610591611332565b60405161059e919061346a565b60405180910390f35b3480156105b2575f80fd5b506105bb611357565b6040516105c8919061346a565b60405180910390f35b3480156105dc575f80fd5b506105e561137f565b6040516105f29190613199565b60405180910390f35b348015610606575f80fd5b5061060f6113bc565b60405161061c91906132a2565b60405180910390f35b348015610630575f80fd5b5061064b6004803603810190610646919061324a565b6113cf565b005b348015610658575f80fd5b50610673600480360381019061066e919061324a565b6115d4565b60405161068091906132a2565b60405180910390f35b348015610694575f80fd5b506106af60048036038101906106aa919061324a565b611702565b6040516106bc91906132a2565b60405180910390f35b3480156106d0575f80fd5b506106eb60048036038101906106e69190613483565b611767565b6040516106f891906132a2565b60405180910390f35b34801561070c575f80fd5b5061072760048036038101906107229190613430565b611784565b005b348015610734575f80fd5b5061073d61188b565b005b34801561074a575f80fd5b5061076560048036038101906107609190613483565b611911565b005b348015610772575f80fd5b5061077b611a2d565b604051610788919061346a565b60405180910390f35b34801561079c575f80fd5b506107b760048036038101906107b29190613483565b611a52565b005b3480156107c4575f80fd5b506107cd611c51565b6040516107da9190613393565b60405180910390f35b3480156107ee575f80fd5b50610809600480360381019061080491906132e5565b611c57565b005b348015610816575f80fd5b50610831600480360381019061082c91906134ae565b611d6f565b60405161083e9190613393565b60405180910390f35b61084f611e39565b005b34801561085c575f80fd5b5061087760048036038101906108729190613483565b611f0e565b005b348015610884575f80fd5b5061089f600480360381019061089a9190613483565b6120fe565b005b60606040518060400160405280600c81526020017f42696f6e69632042756e6e790000000000000000000000000000000000000000815250905090565b5f6108e76110ff565b15610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091e90613536565b60405180910390fd5b610939610932612219565b8484612220565b6001905092915050565b61094b612219565b73ffffffffffffffffffffffffffffffffffffffff16610969611357565b73ffffffffffffffffffffffffffffffffffffffff16146109bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b69061359e565b60405180910390fd5b6109c76110ff565b15610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fe90613536565b60405180910390fd5b80600a60166101000a81548160ff0219169083151502179055507fbe9e7a475b5e837d3520eb528f8f8b34ce6f9fd8edff27d7b2117015df627cf2600a60169054906101000a900460ff16604051610a5f91906132a2565b60405180910390a150565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600554905090565b5f610aa06110ff565b15610ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad790613536565b60405180910390fd5b610aeb8484846123e3565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b32612219565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba89061362c565b60405180910390fd5b610bce85610bbd612219565b8584610bc99190613677565b612220565b60019150509392505050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c609061371a565b60405180910390fd5b5f4790505f610c773061116b565b90505f600a60149054906101000a900460ff1690508015610cad575f600a60146101000a81548160ff0219169083151502179055505b6001600a60156101000a81548160ff021916908315150217905550610cd2823061274a565b5f8347610cdf9190613677565b9050600a60169054906101000a900460ff1615610d2257610d2160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261297e565b5b8115610d44576001600a60146101000a81548160ff0219169083151502179055505b5f600a60156101000a81548160ff02191690831515021790555050505050565b600a60149054906101000a900460ff1681565b5f6012905090565b5f610d886110ff565b15610dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbf90613536565b60405180910390fd5b610e64610dd3612219565b848460025f610de0612219565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e5f9190613738565b612220565b6001905092915050565b5f610e77612219565b73ffffffffffffffffffffffffffffffffffffffff16610e95611357565b73ffffffffffffffffffffffffffffffffffffffff1614610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee29061359e565b60405180910390fd5b610ef36110ff565b15610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a90613536565b60405180910390fd5b610f44610f3e612219565b836129c6565b60019050919050565b610f55612219565b73ffffffffffffffffffffffffffffffffffffffff16610f73611357565b73ffffffffffffffffffffffffffffffffffffffff1614610fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc09061359e565b60405180910390fd5b610fd1612b85565b565b610fdb612219565b73ffffffffffffffffffffffffffffffffffffffff16610ff9611357565b73ffffffffffffffffffffffffffffffffffffffff161461104f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110469061359e565b60405180910390fd5b6110576110ff565b15611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90613536565b60405180910390fd5b806007819055507f1d119ab266e8f5d0a034bbe24b820e3856d15a1da4d0a3c0ae2889658e6367476007546040516110cf9190613393565b60405180910390a150565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f9054906101000a900460ff16905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60075481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6111b9612219565b73ffffffffffffffffffffffffffffffffffffffff166111d7611357565b73ffffffffffffffffffffffffffffffffffffffff161461122d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112249061359e565b60405180910390fd5b6112356110ff565b15611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126c90613536565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f8060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f5345585900000000000000000000000000000000000000000000000000000000815250905090565b600a60169054906101000a900460ff1681565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461145e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114559061371a565b60405180910390fd5b6114666110ff565b156114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90613536565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b906137b5565b60405180910390fd5b5f8290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016115539291906137d3565b6020604051808303815f875af115801561156f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611593919061380e565b507fe24b911c10a799187fef8c4636296be03b90a31bab258364251ad2bcd11853ff8333846040516115c793929190613839565b60405180910390a1505050565b5f6115dd6110ff565b1561161d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161490613536565b60405180910390fd5b5f60025f611629612219565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da906138de565b60405180910390fd5b6116f76116ee612219565b85858403612220565b600191505092915050565b5f61170b6110ff565b1561174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290613536565b60405180910390fd5b61175d611756612219565b84846123e3565b6001905092915050565b6004602052805f5260405f205f915054906101000a900460ff1681565b61178c612219565b73ffffffffffffffffffffffffffffffffffffffff166117aa611357565b73ffffffffffffffffffffffffffffffffffffffff1614611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f79061359e565b60405180910390fd5b6118086110ff565b15611848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183f90613536565b60405180910390fd5b80600b819055507f430549ae112d6c6db3cbf57ab09d2c3f3ef8393ffe6c918d5dbfaaedae610412600b546040516118809190613393565b60405180910390a150565b611893612219565b73ffffffffffffffffffffffffffffffffffffffff166118b1611357565b73ffffffffffffffffffffffffffffffffffffffff1614611907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fe9061359e565b60405180910390fd5b61190f612c26565b565b611919612219565b73ffffffffffffffffffffffffffffffffffffffff16611937611357565b73ffffffffffffffffffffffffffffffffffffffff161461198d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119849061359e565b60405180910390fd5b6119956110ff565b156119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc90613536565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a5a612219565b73ffffffffffffffffffffffffffffffffffffffff16611a78611357565b73ffffffffffffffffffffffffffffffffffffffff1614611ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac59061359e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3390613946565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc2906139fa565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d60405160405180910390a250565b600b5481565b611c5f612219565b73ffffffffffffffffffffffffffffffffffffffff16611c7d611357565b73ffffffffffffffffffffffffffffffffffffffff1614611cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cca9061359e565b60405180910390fd5b611cdb6110ff565b15611d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1290613536565b60405180910390fd5b80600a60146101000a81548160ff0219169083151502179055507fe97fa32ceb811a18d1b14115b17ae0034db328b2e2ca987d9922cbf47b03fad681604051611d6491906132a2565b60405180910390a150565b5f611d786110ff565b15611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf90613536565b60405180910390fd5b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebf9061371a565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611f0b573d5f803e3d5ffd5b50565b611f16612219565b73ffffffffffffffffffffffffffffffffffffffff16611f34611357565b73ffffffffffffffffffffffffffffffffffffffff1614611f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f819061359e565b60405180910390fd5b611f926110ff565b15611fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc990613536565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203790613a88565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612106612219565b73ffffffffffffffffffffffffffffffffffffffff16612124611357565b73ffffffffffffffffffffffffffffffffffffffff161461217a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121719061359e565b60405180910390fd5b6121826110ff565b156121c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b990613536565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361228e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228590613b16565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f390613ba4565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123d69190613393565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244890613c32565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b690613cc0565b60405180910390fd5b5f8111612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f890613d4e565b60405180910390fd5b5f61250b8461116b565b905081811015612550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254790613ddc565b60405180910390fd5b5f600a60159054906101000a900460ff161580156125bb575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156125c9576125c8612cc5565b5b600a60149054906101000a900460ff168015612688575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612687575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b5b801561272d575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158061272c575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b5b1561273757600190505b61274385858584612dca565b5050505050565b5f600267ffffffffffffffff81111561276657612765613dfa565b5b6040519080825280602002602001820160405280156127945781602001602082028036833780820191505090505b50905030815f815181106127ab576127aa613e27565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561284e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128729190613e68565b8160018151811061288657612885613e27565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128eb307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d85612220565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8486426040518663ffffffff1660e01b815260040161294c959493929190613f83565b5f604051808303815f87803b158015612963575f80fd5b505af1158015612975573d5f803e3d5ffd5b50505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156129c1573d5f803e3d5ffd5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2b9061404b565b60405180910390fd5b612a3d8261116b565b8110612a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a75906140d9565b60405180910390fd5b80600554612a8c9190613677565b6005819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612adb9190613677565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b799190613393565b60405180910390a35050565b612b8d6110ff565b15612bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc490613536565b60405180910390fd5b60015f806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612c0f612219565b604051612c1c919061346a565b60405180910390a1565b612c2e6110ff565b612c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6490614141565b60405180910390fd5b5f805f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612cae612219565b604051612cbb919061346a565b60405180910390a1565b5f4790505f612cd33061116b565b9050600b548110612dc6575f600a60149054906101000a900460ff1690508015612d12575f600a60146101000a81548160ff0219169083151502179055505b6001600a60156101000a81548160ff021916908315150217905550612d37823061274a565b5f8347612d449190613677565b9050600a60169054906101000a900460ff1615612d8757612d8660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261297e565b5b8115612da9576001600a60146101000a81548160ff0219169083151502179055505b5f600a60156101000a81548160ff02191690831515021790555050505b5050565b80612dd857612dd7612df7565b5b612de3848484612e14565b80612df157612df0612fb7565b5b50505050565b5f6007540315612e12576007546008819055505f6007819055505b565b5f80612e1f83612fc2565b915091505f8590505f8590508460015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e749190613677565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508360015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612efe9190613738565b60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050612f4b8582612ff1565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612fa89190613393565b60405180910390a35050505050565b600854600781905550565b5f805f8390505f612fd2826130ed565b90505f8183612fe19190613677565b9050808294509450505050915091565b8060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461303a9190613738565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8111156130e9573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130e09190613393565b60405180910390a35b5050565b5f6064600754836130fe919061415f565b61310891906141cd565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561314657808201518184015260208101905061312b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61316b8261310f565b6131758185613119565b9350613185818560208601613129565b61318e81613151565b840191505092915050565b5f6020820190508181035f8301526131b18184613161565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6131e6826131bd565b9050919050565b6131f6816131dc565b8114613200575f80fd5b50565b5f81359050613211816131ed565b92915050565b5f819050919050565b61322981613217565b8114613233575f80fd5b50565b5f8135905061324481613220565b92915050565b5f80604083850312156132605761325f6131b9565b5b5f61326d85828601613203565b925050602061327e85828601613236565b9150509250929050565b5f8115159050919050565b61329c81613288565b82525050565b5f6020820190506132b55f830184613293565b92915050565b6132c481613288565b81146132ce575f80fd5b50565b5f813590506132df816132bb565b92915050565b5f602082840312156132fa576132f96131b9565b5b5f613307848285016132d1565b91505092915050565b5f819050919050565b5f61333361332e613329846131bd565b613310565b6131bd565b9050919050565b5f61334482613319565b9050919050565b5f6133558261333a565b9050919050565b6133658161334b565b82525050565b5f60208201905061337e5f83018461335c565b92915050565b61338d81613217565b82525050565b5f6020820190506133a65f830184613384565b92915050565b5f805f606084860312156133c3576133c26131b9565b5b5f6133d086828701613203565b93505060206133e186828701613203565b92505060406133f286828701613236565b9150509250925092565b5f60ff82169050919050565b613411816133fc565b82525050565b5f60208201905061342a5f830184613408565b92915050565b5f60208284031215613445576134446131b9565b5b5f61345284828501613236565b91505092915050565b613464816131dc565b82525050565b5f60208201905061347d5f83018461345b565b92915050565b5f60208284031215613498576134976131b9565b5b5f6134a584828501613203565b91505092915050565b5f80604083850312156134c4576134c36131b9565b5b5f6134d185828601613203565b92505060206134e285828601613203565b9150509250929050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f613520601083613119565b915061352b826134ec565b602082019050919050565b5f6020820190508181035f83015261354d81613514565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613588602083613119565b915061359382613554565b602082019050919050565b5f6020820190508181035f8301526135b58161357c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613616602883613119565b9150613621826135bc565b604082019050919050565b5f6020820190508181035f8301526136438161360a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61368182613217565b915061368c83613217565b92508282039050818111156136a4576136a361364a565b5b92915050565b7f4f6e6c7920746865206d616e616765722063616e2063616c6c207468697320665f8201527f756e6374696f6e2e000000000000000000000000000000000000000000000000602082015250565b5f613704602883613119565b915061370f826136aa565b604082019050919050565b5f6020820190508181035f830152613731816136f8565b9050919050565b5f61374282613217565b915061374d83613217565b92508282019050808211156137655761376461364a565b5b92915050565b7f416464726573732063616e74206265207a65726f2061646472657373000000005f82015250565b5f61379f601c83613119565b91506137aa8261376b565b602082019050919050565b5f6020820190508181035f8301526137cc81613793565b9050919050565b5f6040820190506137e65f83018561345b565b6137f36020830184613384565b9392505050565b5f81519050613808816132bb565b92915050565b5f60208284031215613823576138226131b9565b5b5f613830848285016137fa565b91505092915050565b5f60608201905061384c5f83018661345b565b613859602083018561345b565b6138666040830184613384565b949350505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6138c8602583613119565b91506138d38261386e565b604082019050919050565b5f6020820190508181035f8301526138f5816138bc565b9050919050565b7f496e76616c6964206d616e6167657220616464726573732e00000000000000005f82015250565b5f613930601883613119565b915061393b826138fc565b602082019050919050565b5f6020820190508181035f83015261395d81613924565b9050919050565b7f4e6577206d616e616765722061646472657373206d75737420626520646966665f8201527f6572656e742066726f6d207468652063757272656e74206d616e61676572206160208201527f6464726573732e00000000000000000000000000000000000000000000000000604082015250565b5f6139e4604783613119565b91506139ef82613964565b606082019050919050565b5f6020820190508181035f830152613a11816139d8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613a72602683613119565b9150613a7d82613a18565b604082019050919050565b5f6020820190508181035f830152613a9f81613a66565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613b00602483613119565b9150613b0b82613aa6565b604082019050919050565b5f6020820190508181035f830152613b2d81613af4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b8e602283613119565b9150613b9982613b34565b604082019050919050565b5f6020820190508181035f830152613bbb81613b82565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613c1c602583613119565b9150613c2782613bc2565b604082019050919050565b5f6020820190508181035f830152613c4981613c10565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613caa602383613119565b9150613cb582613c50565b604082019050919050565b5f6020820190508181035f830152613cd781613c9e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613d38602983613119565b9150613d4382613cde565b604082019050919050565b5f6020820190508181035f830152613d6581613d2c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613dc6602683613119565b9150613dd182613d6c565b604082019050919050565b5f6020820190508181035f830152613df381613dba565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613e62816131ed565b92915050565b5f60208284031215613e7d57613e7c6131b9565b5b5f613e8a84828501613e54565b91505092915050565b5f819050919050565b5f613eb6613eb1613eac84613e93565b613310565b613217565b9050919050565b613ec681613e9c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613efe816131dc565b82525050565b5f613f0f8383613ef5565b60208301905092915050565b5f602082019050919050565b5f613f3182613ecc565b613f3b8185613ed6565b9350613f4683613ee6565b805f5b83811015613f76578151613f5d8882613f04565b9750613f6883613f1b565b925050600181019050613f49565b5085935050505092915050565b5f60a082019050613f965f830188613384565b613fa36020830187613ebd565b8181036040830152613fb58186613f27565b9050613fc4606083018561345b565b613fd16080830184613384565b9695505050505050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f614035602183613119565b915061404082613fdb565b604082019050919050565b5f6020820190508181035f83015261406281614029565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140c3602283613119565b91506140ce82614069565b604082019050919050565b5f6020820190508181035f8301526140f0816140b7565b9050919050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f61412b601483613119565b9150614136826140f7565b602082019050919050565b5f6020820190508181035f8301526141588161411f565b9050919050565b5f61416982613217565b915061417483613217565b925082820261418281613217565b915082820484148315176141995761419861364a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6141d782613217565b91506141e283613217565b9250826141f2576141f16141a0565b5b82820490509291505056fea2646970667358221220dbd8f536c18465e78ef117cdf9a842847b21bbae1d46e4182db64200a7fcc3a464736f6c63430008140033

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

0000000000000000000000001313ae68339b7a8655f53eeaa07d0d6092747800

-----Decoded View---------------
Arg [0] : _marketingWallet (address): 0x1313Ae68339B7A8655F53eEaa07D0d6092747800

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001313ae68339b7a8655f53eeaa07d0d6092747800


Deployed Bytecode Sourcemap

17301:14326:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19643:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20928:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23958:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17993:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19977:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21171:509;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29974:892;;;;;;;;;;;;;:::i;:::-;;18254:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19867:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21688:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23208:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23030:79;;;;;;;;;;;;;:::i;:::-;;23751:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18051:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1816:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20273:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17895:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20090:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2953:162;;;;;;;;;;;;;:::i;:::-;;17856:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2730:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19753:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18314:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24591:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22018:507;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20445:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17592:53;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24186:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23117:83;;;;;;;;;;;;;:::i;:::-;;23438:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18171:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22680:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18406:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24435:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20694:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25008:122;;;:::i;:::-;;3123:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23611:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19643:102;19699:13;19732:5;;;;;;;;;;;;;;;;;19725:12;;19643:102;:::o;20928:235::-;21072:4;1955:8;:6;:8::i;:::-;1954:9;1946:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21094:39:::1;21103:12;:10;:12::i;:::-;21117:7;21126:6;21094:8;:39::i;:::-;21151:4;21144:11;;20928:235:::0;;;;:::o;23958:220::-;2876:12;:10;:12::i;:::-;2865:23;;:7;:5;:7::i;:::-;:23;;;2857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1955:8:::1;:6;:8::i;:::-;1954:9;1946:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;24103:19:::2;24080:20;;:42;;;;;;;;;;;;;;;;;;24138:32;24149:20;;;;;;;;;;;24138:32;;;;;;:::i;:::-;;;;;;;;23958:220:::0;:::o;17993:51::-;;;:::o;19977:105::-;20040:7;20067;;20060:14;;19977:105;:::o;21171:509::-;21327:4;1955:8;:6;:8::i;:::-;1954:9;1946:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21344:36:::1;21354:6;21362:9;21373:6;21344:9;:36::i;:::-;21393:24;21420:11;:19;21432:6;21420:19;;;;;;;;;;;;;;;:33;21440:12;:10;:12::i;:::-;21420:33;;;;;;;;;;;;;;;;21393:60;;21506:6;21486:16;:26;;21464:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;21591:57;21600:6;21608:12;:10;:12::i;:::-;21641:6;21622:16;:25;;;;:::i;:::-;21591:8;:57::i;:::-;21668:4;21661:11;;;21171:509:::0;;;;;:::o;29974:892::-;22593:14;;;;;;;;;;;22579:28;;:10;:28;;;22571:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;30034:22:::1;30059:21;30034:46;;30091:28;30122:24;30140:4;30122:9;:24::i;:::-;30091:55;;30159:20;30182:9;;;;;;;;;;;30159:32;;30257:15;30253:38;;;30286:5;30274:9;;:17;;;;;;;;;;;;;;;;;;30253:38;30319:4;30304:12;;:19;;;;;;;;;;;;;;;;;;30387:53;30404:20;30434:4;30387:16;:53::i;:::-;30451:26;30504:14;30480:21;:38;;;;:::i;:::-;30451:67;;30578:20;;;;;;;;;;;30574:152;;;30617:109;30668:15;;;;;;;;;;;30707:18;30617:20;:109::i;:::-;30574:152;30794:15;30790:37;;;30823:4;30811:9;;:16;;;;;;;;;;;;;;;;;;30790:37;30853:5;30838:12;;:20;;;;;;;;;;;;;;;;;;30023:843;;;;29974:892::o:0;18254:21::-;;;;;;;;;;;;;:::o;19867:102::-;19927:5;17845:2;19945:16;;19867:102;:::o;21688:322::-;21828:4;1955:8;:6;:8::i;:::-;1954:9;1946:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21850:130:::1;21873:12;:10;:12::i;:::-;21900:7;21959:10;21922:11;:25;21934:12;:10;:12::i;:::-;21922:25;;;;;;;;;;;;;;;:34;21948:7;21922:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;21850:8;:130::i;:::-;21998:4;21991:11;;21688:322:::0;;;;:::o;23208:222::-;23351:4;2876:12;:10;:12::i;:::-;2865:23;;:7;:5;:7::i;:::-;:23;;;2857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1955:8:::1;:6;:8::i;:::-;1954:9;1946:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;23373:27:::2;23379:12;:10;:12::i;:::-;23393:6;23373:5;:27::i;:::-;23418:4;23411:11;;23208:222:::0;;;:::o;23030:79::-;2876:12;:10;:12::i;:::-;2865:23;;:7;:5;:7::i;:::-;:23;;;2857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23093:8:::1;:6;:8::i;:::-;23030:79::o:0;23751:199::-;2876:12;:10;:12::i;:::-;2865:23;;:7;:5;:7::i;:::-;:23;;;2857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1955:8:::1;:6;:8::i;:::-;1954:9;1946:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;23887:3:::2;23872:12;:18;;;;23906:36;23929:12;;23906:36;;;;;;:::i;:::-;;;;;;;;23751:199:::0;:::o;18051:28::-;;;;;;;;;;;;;:::o;1816:86::-;1863:4;1887:7;;;;;;;;;;;1880:14;;1816:86;:::o;20273:164::-;20370:4;20399:21;:30;20421:7;20399:30;;;;;;;;;;;;;;;;;;;;;;;;;20392:37;;20273:164;;;:::o;17895:31::-;;;;:::o;20090:175::-;20209:7;20241;:16;20249:7;20241:16;;;;;;;;;;;;;;;;20234:23;;20090:175;;;:::o;2953:162::-;2876:12;:10;:12::i;:::-;2865:23;;:7;:5;:7::i;:::-;:23;;;2857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1955:8:::1;:6;:8::i;:::-;1954:9;1946:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3074:1:::2;3037:40;;3058:6;;;;;;;;;;;3037:40;;;;;;;;;;;;3105:1;3088:6:::0;::::2;:19;;;;;;;;;;;;;;;;;;2953:162::o:0;17856:30::-;;;;;;;;;;;;;:::o;2730:87::-;2776:7;2803:6;;;;;;;;;;;2796:13;;2730:87;:::o;19753:106::-;19811:13;19844:7;;;;;;;;;;;;;;;;;19837:14;;19753:106;:::o;18314:39::-;;;;;;;;;;;;;:::o;24591:409::-;22593:14;;;;;;;;;;;22579:28;;:10;:28;;;22571:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;1955:8:::1;:6;:8::i;:::-;1954:9;1946:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;24767:1:::2;24741:28;;:14;:28;;::::0;24733:69:::2;;;;;;;;;;;;:::i;:::-;;;;;;;;;24813:20;24843:14;24813:45;;24869:13;:22;;;24892:10;24904:7;24869:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24928:64;24956:14;24972:10;24984:7;24928:64;;;;;;;;:::i;:::-;;;;;;;;24722:278;24591:409:::0;;:::o;22018:507::-;22163:4;1955:8;:6;:8::i;:::-;1954:9;1946:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;22185:24:::1;22212:11;:25;22224:12;:10;:12::i;:::-;22212:25;;;;;;;;;;;;;;;:34;22238:7;22212:34;;;;;;;;;;;;;;;;22185:61;;22299:15;22279:16;:35;;22257:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;22415:67;22424:12;:10;:12::i;:::-;22438:7;22466:15;22447:16;:34;22415:8;:67::i;:::-;22513:4;22506:11;;;22018:507:::0;;;;:::o;20445:241::-;20592:4;1955:8;:6;:8::i;:::-;1954:9;1946:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20614:42:::1;20624:12;:10;:12::i;:::-;20638:9;20649:6;20614:9;:42::i;:::-;20674:4;20667:11;;20445:241:::0;;;;:::o;17592:53::-;;;;;;;;;;;;;;;;;;;;;;:::o;24186:241::-;2876:12;:10;:12::i;:::-;2865:23;;:7;:5;:7::i;:::-;:23;;;2857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1955:8:::1;:6;:8::i;:::-;1954:9;1946:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;24343:9:::2;24317:23;:35;;;;24368:51;24395:23;;24368:51;;;;;;:::i;:::-;;;;;;;;24186:241:::0;:::o;23117:83::-;2876:12;:10;:12::i;:::-;2865:23;;:7;:5;:7::i;:::-;:23;;;2857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23182:10:::1;:8;:10::i;:::-;23117:83::o:0;23438:165::-;2876:12;:10;:12::i;:::-;2865:23;;:7;:5;:7::i;:::-;:23;;;2857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1955:8:::1;:6;:8::i;:::-;1954:9;1946:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;23591:4:::2;23558:21;:30;23580:7;23558:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;23438:165:::0;:::o;18171:74::-;;;;;;;;;;;;;:::o;22680:342::-;2876:12;:10;:12::i;:::-;2865:23;;:7;:5;:7::i;:::-;:23;;;2857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22780:1:::1;22758:24;;:10;:24;;::::0;22750:61:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22844:14;;;;;;;;;;;22830:28;;:10;:28;;::::0;22822:112:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22962:10;22945:14;;:27;;;;;;;;;;;;;;;;;;23003:10;22988:26;;;;;;;;;;;;22680:342:::0;:::o;18406:60::-;;;;:::o;24435:148::-;2876:12;:10;:12::i;:::-;2865:23;;:7;:5;:7::i;:::-;:23;;;2857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1955:8:::1;:6;:8::i;:::-;1954:9;1946:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;24529:9:::2;24517;;:21;;;;;;;;;;;;;;;;;;24554;24565:9;24554:21;;;;;;:::i;:::-;;;;;;;;24435:148:::0;:::o;20694:226::-;20853:7;1955:8;:6;:8::i;:::-;1954:9;1946:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20885:11:::1;:18;20897:5;20885:18;;;;;;;;;;;;;;;:27;20904:7;20885:27;;;;;;;;;;;;;;;;20878:34;;20694:226:::0;;;;:::o;25008:122::-;22593:14;;;;;;;;;;;22579:28;;:10;:28;;;22571:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;25079:10:::1;25071:28;;:51;25100:21;25071:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25008:122::o:0;3123:336::-;2876:12;:10;:12::i;:::-;2865:23;;:7;:5;:7::i;:::-;:23;;;2857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1955:8:::1;:6;:8::i;:::-;1954:9;1946:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3301:1:::2;3281:22;;:8;:22;;::::0;3259:110:::2;;;;;;;;;;;;:::i;:::-;;;;;;;;;3414:8;3385:38;;3406:6;;;;;;;;;;;3385:38;;;;;;;;;;;;3443:8;3434:6;;:17;;;;;;;;;;;;;;;;;;3123:336:::0;:::o;23611:132::-;2876:12;:10;:12::i;:::-;2865:23;;:7;:5;:7::i;:::-;:23;;;2857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1955:8:::1;:6;:8::i;:::-;1954:9;1946:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;23730:5:::2;23697:21;:30;23719:7;23697:30;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;23611:132:::0;:::o;1264:98::-;1317:7;1344:10;1337:17;;1264:98;:::o;25231:380::-;25384:1;25367:19;;:5;:19;;;25359:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25465:1;25446:21;;:7;:21;;;25438:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25549:6;25519:11;:18;25531:5;25519:18;;;;;;;;;;;;;;;:27;25538:7;25519:27;;;;;;;;;;;;;;;:36;;;;25587:7;25571:32;;25580:5;25571:32;;;25596:6;25571:32;;;;;;:::i;:::-;;;;;;;;25231:380;;;:::o;25619:1081::-;25758:1;25742:18;;:4;:18;;;25734:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25835:1;25821:16;;:2;:16;;;25813:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25905:1;25896:6;:10;25888:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25965:21;25989:15;25999:4;25989:9;:15::i;:::-;25965:39;;26054:6;26037:13;:23;;26015:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;26200:12;26238;;;;;;;;;;;26237:13;:38;;;;;26262:13;;;;;;;;;;;26254:21;;:4;:21;;;;26237:38;26233:59;;;26277:15;:13;:15::i;:::-;26233:59;26393:9;;;;;;;;;;;:72;;;;;26428:13;;;;;;;;;;;26420:21;;:4;:21;;;:44;;;;26451:13;;;;;;;;;;;26445:19;;:2;:19;;;26420:44;26393:72;:149;;;;;26484:21;:27;26506:4;26484:27;;;;;;;;;;;;;;;;;;;;;;;;;26483:28;:58;;;;26516:21;:25;26538:2;26516:25;;;;;;;;;;;;;;;;;;;;;;;;;26515:26;26483:58;26393:149;26375:193;;;26564:4;26554:14;;26375:193;26651:41;26666:4;26672:2;26676:6;26684:7;26651:14;:41::i;:::-;25723:977;;25619:1081;;;:::o;31023:601::-;31167:21;31205:1;31191:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31167:40;;31236:4;31218;31223:1;31218:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;31262:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31252:4;31257:1;31252:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;31297:62;31314:4;31329:15;31347:11;31297:8;:62::i;:::-;31398:15;:66;;;31479:11;31505:1;31549:4;31568:7;31590:15;31398:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31096:528;31023:601;;:::o;30874:141::-;30981:9;:18;;:26;31000:6;30981:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30874:141;;:::o;26708:424::-;26811:1;26792:21;;:7;:21;;;26784:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26893:18;26903:7;26893:9;:18::i;:::-;26884:6;:27;26862:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;27006:6;26996:7;;:16;;;;:::i;:::-;26986:7;:26;;;;27063:6;27044:7;:16;27052:7;27044:16;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;27025:7;:16;27033:7;27025:16;;;;;;;;;;;;;;;:44;;;;27113:1;27087:37;;27096:7;27087:37;;;27117:6;27087:37;;;;;;:::i;:::-;;;;;;;;26708:424;;:::o;2114:118::-;1955:8;:6;:8::i;:::-;1954:9;1946:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2184:4:::1;2174:7;::::0;:14:::1;;;;;;;;;;;;;;;;;;2204:20;2211:12;:10;:12::i;:::-;2204:20;;;;;;:::i;:::-;;;;;;;;2114:118::o:0;2240:120::-;2053:8;:6;:8::i;:::-;2045:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;2309:5:::1;2299:7:::0;::::1;:15;;;;;;;;;;;;;;;;;;2330:22;2339:12;:10;:12::i;:::-;2330:22;;;;;;:::i;:::-;;;;;;;;2240:120::o:0;28969:997::-;29014:22;29039:21;29014:46;;29071:28;29102:24;29120:4;29102:9;:24::i;:::-;29071:55;;29167:23;;29143:20;:47;29139:820;;29207:20;29230:9;;;;;;;;;;;29207:32;;29313:15;29309:38;;;29342:5;29330:9;;:17;;;;;;;;;;;;;;;;;;29309:38;29377:4;29362:12;;:19;;;;;;;;;;;;;;;;;;29453:53;29470:20;29500:4;29453:16;:53::i;:::-;29521:26;29574:14;29550:21;:38;;;;:::i;:::-;29521:67;;29655:20;;;;;;;;;;;29651:152;;;29694:109;29745:15;;;;;;;;;;;29784:18;29694:20;:109::i;:::-;29651:152;29879:15;29875:37;;;29908:4;29896:9;;:16;;;;;;;;;;;;;;;;;;29875:37;29942:5;29927:12;;:20;;;;;;;;;;;;;;;;;;29192:767;;29139:820;29003:963;;28969:997::o;27213:283::-;27370:7;27365:28;;27379:14;:12;:14::i;:::-;27365:28;27406:40;27420:6;27428:9;27439:6;27406:13;:40::i;:::-;27464:7;27459:29;;27473:15;:13;:15::i;:::-;27459:29;27213:283;;;;:::o;28709:156::-;28773:1;28757:12;;:17;28753:30;28776:7;28753:30;28818:12;;28795:20;:35;;;;28856:1;28841:12;:16;;;;28709:156;:::o;27504:511::-;27634:23;27659:16;27679:19;27690:7;27679:10;:19::i;:::-;27633:65;;;;27726:12;27741:6;27726:21;;27762:10;27775:9;27762:22;;27831:7;27815;:13;27823:4;27815:13;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;27799:7;:13;27807:4;27799:13;;;;;;;;;;;;;;;:39;;;;27881:15;27867:7;:11;27875:2;27867:11;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;27853:7;:11;27861:2;27853:11;;;;;;;;;;;;;;;:43;;;;27711:197;;27918:29;27930:6;27938:8;27918:11;:29::i;:::-;27980:9;27963:44;;27972:6;27963:44;;;27991:15;27963:44;;;;;;:::i;:::-;;;;;;;;27622:393;;27504:511;;;:::o;28873:88::-;28933:20;;28918:12;:35;;;;28873:88::o;28023:307::-;28109:7;28118;28143:15;28161:6;28143:24;;28178:16;28197:25;28214:7;28197:16;:25::i;:::-;28178:44;;28233:23;28269:8;28259:7;:18;;;;:::i;:::-;28233:44;;28296:15;28313:8;28288:34;;;;;;;28023:307;;;:::o;28483:218::-;28608:8;28583:7;:22;28599:4;28583:22;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;28558:7;:22;28574:4;28558:22;;;;;;;;;;;;;;;:58;;;;28644:1;28633:8;:12;28629:64;;;28677:4;28652:41;;28661:6;28652:41;;;28684:8;28652:41;;;;;;:::i;:::-;;;;;;;;28629:64;28483:218;;:::o;28338:137::-;28404:7;28461:5;28443:12;;28432:7;:24;;;;:::i;:::-;28431:36;;;;:::i;:::-;28424:43;;28338:137;;;:::o;7:99:1:-;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;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:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:60::-;4064:3;4085:5;4078:12;;4036:60;;;:::o;4102:142::-;4152:9;4185:53;4203:34;4212:24;4230:5;4212:24;:::i;:::-;4203:34;:::i;:::-;4185:53;:::i;:::-;4172:66;;4102:142;;;:::o;4250:126::-;4300:9;4333:37;4364:5;4333:37;:::i;:::-;4320:50;;4250:126;;;:::o;4382:153::-;4459:9;4492:37;4523:5;4492:37;:::i;:::-;4479:50;;4382:153;;;:::o;4541:185::-;4655:64;4713:5;4655:64;:::i;:::-;4650:3;4643:77;4541:185;;:::o;4732:276::-;4852:4;4890:2;4879:9;4875:18;4867:26;;4903:98;4998:1;4987:9;4983:17;4974:6;4903:98;:::i;:::-;4732:276;;;;:::o;5014:118::-;5101:24;5119:5;5101:24;:::i;:::-;5096:3;5089:37;5014:118;;:::o;5138:222::-;5231:4;5269:2;5258:9;5254:18;5246:26;;5282:71;5350:1;5339:9;5335:17;5326:6;5282:71;:::i;:::-;5138:222;;;;:::o;5366:619::-;5443:6;5451;5459;5508:2;5496:9;5487:7;5483:23;5479:32;5476:119;;;5514:79;;:::i;:::-;5476:119;5634:1;5659:53;5704:7;5695:6;5684:9;5680:22;5659:53;:::i;:::-;5649:63;;5605:117;5761:2;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5732:118;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;5366:619;;;;;:::o;5991:86::-;6026:7;6066:4;6059:5;6055:16;6044:27;;5991:86;;;:::o;6083:112::-;6166:22;6182:5;6166:22;:::i;:::-;6161:3;6154:35;6083:112;;:::o;6201:214::-;6290:4;6328:2;6317:9;6313:18;6305:26;;6341:67;6405:1;6394:9;6390:17;6381:6;6341:67;:::i;:::-;6201:214;;;;:::o;6421:329::-;6480:6;6529:2;6517:9;6508:7;6504:23;6500:32;6497:119;;;6535:79;;:::i;:::-;6497:119;6655:1;6680:53;6725:7;6716:6;6705:9;6701:22;6680:53;:::i;:::-;6670:63;;6626:117;6421:329;;;;:::o;6756:118::-;6843:24;6861:5;6843:24;:::i;:::-;6838:3;6831:37;6756:118;;:::o;6880:222::-;6973:4;7011:2;7000:9;6996:18;6988:26;;7024:71;7092:1;7081:9;7077:17;7068:6;7024:71;:::i;:::-;6880:222;;;;:::o;7108:329::-;7167:6;7216:2;7204:9;7195:7;7191:23;7187:32;7184:119;;;7222:79;;:::i;:::-;7184:119;7342:1;7367:53;7412:7;7403:6;7392:9;7388:22;7367:53;:::i;:::-;7357:63;;7313:117;7108:329;;;;:::o;7443:474::-;7511:6;7519;7568:2;7556:9;7547:7;7543:23;7539:32;7536:119;;;7574:79;;:::i;:::-;7536:119;7694:1;7719:53;7764:7;7755:6;7744:9;7740:22;7719:53;:::i;:::-;7709:63;;7665:117;7821:2;7847:53;7892:7;7883:6;7872:9;7868:22;7847:53;:::i;:::-;7837:63;;7792:118;7443:474;;;;;:::o;7923:166::-;8063:18;8059:1;8051:6;8047:14;8040:42;7923:166;:::o;8095:366::-;8237:3;8258:67;8322:2;8317:3;8258:67;:::i;:::-;8251:74;;8334:93;8423:3;8334:93;:::i;:::-;8452:2;8447:3;8443:12;8436:19;;8095:366;;;:::o;8467:419::-;8633:4;8671:2;8660:9;8656:18;8648:26;;8720:9;8714:4;8710:20;8706:1;8695:9;8691:17;8684:47;8748:131;8874:4;8748:131;:::i;:::-;8740:139;;8467:419;;;:::o;8892:182::-;9032:34;9028:1;9020:6;9016:14;9009:58;8892:182;:::o;9080:366::-;9222:3;9243:67;9307:2;9302:3;9243:67;:::i;:::-;9236:74;;9319:93;9408:3;9319:93;:::i;:::-;9437:2;9432:3;9428:12;9421:19;;9080:366;;;:::o;9452:419::-;9618:4;9656:2;9645:9;9641:18;9633:26;;9705:9;9699:4;9695:20;9691:1;9680:9;9676:17;9669:47;9733:131;9859:4;9733:131;:::i;:::-;9725:139;;9452:419;;;:::o;9877:227::-;10017:34;10013:1;10005:6;10001:14;9994:58;10086:10;10081:2;10073:6;10069:15;10062:35;9877:227;:::o;10110:366::-;10252:3;10273:67;10337:2;10332:3;10273:67;:::i;:::-;10266:74;;10349:93;10438:3;10349:93;:::i;:::-;10467:2;10462:3;10458:12;10451:19;;10110:366;;;:::o;10482:419::-;10648:4;10686:2;10675:9;10671:18;10663:26;;10735:9;10729:4;10725:20;10721:1;10710:9;10706:17;10699:47;10763:131;10889:4;10763:131;:::i;:::-;10755:139;;10482:419;;;:::o;10907:180::-;10955:77;10952:1;10945:88;11052:4;11049:1;11042:15;11076:4;11073:1;11066:15;11093:194;11133:4;11153:20;11171:1;11153:20;:::i;:::-;11148:25;;11187:20;11205:1;11187:20;:::i;:::-;11182:25;;11231:1;11228;11224:9;11216:17;;11255:1;11249:4;11246:11;11243:37;;;11260:18;;:::i;:::-;11243:37;11093:194;;;;:::o;11293:227::-;11433:34;11429:1;11421:6;11417:14;11410:58;11502:10;11497:2;11489:6;11485:15;11478:35;11293:227;:::o;11526:366::-;11668:3;11689:67;11753:2;11748:3;11689:67;:::i;:::-;11682:74;;11765:93;11854:3;11765:93;:::i;:::-;11883:2;11878:3;11874:12;11867:19;;11526:366;;;:::o;11898:419::-;12064:4;12102:2;12091:9;12087:18;12079:26;;12151:9;12145:4;12141:20;12137:1;12126:9;12122:17;12115:47;12179:131;12305:4;12179:131;:::i;:::-;12171:139;;11898:419;;;:::o;12323:191::-;12363:3;12382:20;12400:1;12382:20;:::i;:::-;12377:25;;12416:20;12434:1;12416:20;:::i;:::-;12411:25;;12459:1;12456;12452:9;12445:16;;12480:3;12477:1;12474:10;12471:36;;;12487:18;;:::i;:::-;12471:36;12323:191;;;;:::o;12520:178::-;12660:30;12656:1;12648:6;12644:14;12637:54;12520:178;:::o;12704:366::-;12846:3;12867:67;12931:2;12926:3;12867:67;:::i;:::-;12860:74;;12943:93;13032:3;12943:93;:::i;:::-;13061:2;13056:3;13052:12;13045:19;;12704:366;;;:::o;13076:419::-;13242:4;13280:2;13269:9;13265:18;13257:26;;13329:9;13323:4;13319:20;13315:1;13304:9;13300:17;13293:47;13357:131;13483:4;13357:131;:::i;:::-;13349:139;;13076:419;;;:::o;13501:332::-;13622:4;13660:2;13649:9;13645:18;13637:26;;13673:71;13741:1;13730:9;13726:17;13717:6;13673:71;:::i;:::-;13754:72;13822:2;13811:9;13807:18;13798:6;13754:72;:::i;:::-;13501:332;;;;;:::o;13839:137::-;13893:5;13924:6;13918:13;13909:22;;13940:30;13964:5;13940:30;:::i;:::-;13839:137;;;;:::o;13982:345::-;14049:6;14098:2;14086:9;14077:7;14073:23;14069:32;14066:119;;;14104:79;;:::i;:::-;14066:119;14224:1;14249:61;14302:7;14293:6;14282:9;14278:22;14249:61;:::i;:::-;14239:71;;14195:125;13982:345;;;;:::o;14333:442::-;14482:4;14520:2;14509:9;14505:18;14497:26;;14533:71;14601:1;14590:9;14586:17;14577:6;14533:71;:::i;:::-;14614:72;14682:2;14671:9;14667:18;14658:6;14614:72;:::i;:::-;14696;14764:2;14753:9;14749:18;14740:6;14696:72;:::i;:::-;14333:442;;;;;;:::o;14781:224::-;14921:34;14917:1;14909:6;14905:14;14898:58;14990:7;14985:2;14977:6;14973:15;14966:32;14781:224;:::o;15011:366::-;15153:3;15174:67;15238:2;15233:3;15174:67;:::i;:::-;15167:74;;15250:93;15339:3;15250:93;:::i;:::-;15368:2;15363:3;15359:12;15352:19;;15011:366;;;:::o;15383:419::-;15549:4;15587:2;15576:9;15572:18;15564:26;;15636:9;15630:4;15626:20;15622:1;15611:9;15607:17;15600:47;15664:131;15790:4;15664:131;:::i;:::-;15656:139;;15383:419;;;:::o;15808:174::-;15948:26;15944:1;15936:6;15932:14;15925:50;15808:174;:::o;15988:366::-;16130:3;16151:67;16215:2;16210:3;16151:67;:::i;:::-;16144:74;;16227:93;16316:3;16227:93;:::i;:::-;16345:2;16340:3;16336:12;16329:19;;15988:366;;;:::o;16360:419::-;16526:4;16564:2;16553:9;16549:18;16541:26;;16613:9;16607:4;16603:20;16599:1;16588:9;16584:17;16577:47;16641:131;16767:4;16641:131;:::i;:::-;16633:139;;16360:419;;;:::o;16785:295::-;16925:34;16921:1;16913:6;16909:14;16902:58;16994:34;16989:2;16981:6;16977:15;16970:59;17063:9;17058:2;17050:6;17046:15;17039:34;16785:295;:::o;17086:366::-;17228:3;17249:67;17313:2;17308:3;17249:67;:::i;:::-;17242:74;;17325:93;17414:3;17325:93;:::i;:::-;17443:2;17438:3;17434:12;17427:19;;17086:366;;;:::o;17458:419::-;17624:4;17662:2;17651:9;17647:18;17639:26;;17711:9;17705:4;17701:20;17697:1;17686:9;17682:17;17675:47;17739:131;17865:4;17739:131;:::i;:::-;17731:139;;17458:419;;;:::o;17883:225::-;18023:34;18019:1;18011:6;18007:14;18000:58;18092:8;18087:2;18079:6;18075:15;18068:33;17883:225;:::o;18114:366::-;18256:3;18277:67;18341:2;18336:3;18277:67;:::i;:::-;18270:74;;18353:93;18442:3;18353:93;:::i;:::-;18471:2;18466:3;18462:12;18455:19;;18114:366;;;:::o;18486:419::-;18652:4;18690:2;18679:9;18675:18;18667:26;;18739:9;18733:4;18729:20;18725:1;18714:9;18710:17;18703:47;18767:131;18893:4;18767:131;:::i;:::-;18759:139;;18486:419;;;:::o;18911:223::-;19051:34;19047:1;19039:6;19035:14;19028:58;19120:6;19115:2;19107:6;19103:15;19096:31;18911:223;:::o;19140:366::-;19282:3;19303:67;19367:2;19362:3;19303:67;:::i;:::-;19296:74;;19379:93;19468:3;19379:93;:::i;:::-;19497:2;19492:3;19488:12;19481:19;;19140:366;;;:::o;19512:419::-;19678:4;19716:2;19705:9;19701:18;19693:26;;19765:9;19759:4;19755:20;19751:1;19740:9;19736:17;19729:47;19793:131;19919:4;19793:131;:::i;:::-;19785:139;;19512:419;;;:::o;19937:221::-;20077:34;20073:1;20065:6;20061:14;20054:58;20146:4;20141:2;20133:6;20129:15;20122:29;19937:221;:::o;20164:366::-;20306:3;20327:67;20391:2;20386:3;20327:67;:::i;:::-;20320:74;;20403:93;20492:3;20403:93;:::i;:::-;20521:2;20516:3;20512:12;20505:19;;20164:366;;;:::o;20536:419::-;20702:4;20740:2;20729:9;20725:18;20717:26;;20789:9;20783:4;20779:20;20775:1;20764:9;20760:17;20753:47;20817:131;20943:4;20817:131;:::i;:::-;20809:139;;20536:419;;;:::o;20961:224::-;21101:34;21097:1;21089:6;21085:14;21078:58;21170:7;21165:2;21157:6;21153:15;21146:32;20961:224;:::o;21191:366::-;21333:3;21354:67;21418:2;21413:3;21354:67;:::i;:::-;21347:74;;21430:93;21519:3;21430:93;:::i;:::-;21548:2;21543:3;21539:12;21532:19;;21191:366;;;:::o;21563:419::-;21729:4;21767:2;21756:9;21752:18;21744:26;;21816:9;21810:4;21806:20;21802:1;21791:9;21787:17;21780:47;21844:131;21970:4;21844:131;:::i;:::-;21836:139;;21563:419;;;:::o;21988:222::-;22128:34;22124:1;22116:6;22112:14;22105:58;22197:5;22192:2;22184:6;22180:15;22173:30;21988:222;:::o;22216:366::-;22358:3;22379:67;22443:2;22438:3;22379:67;:::i;:::-;22372:74;;22455:93;22544:3;22455:93;:::i;:::-;22573:2;22568:3;22564:12;22557:19;;22216:366;;;:::o;22588:419::-;22754:4;22792:2;22781:9;22777:18;22769:26;;22841:9;22835:4;22831:20;22827:1;22816:9;22812:17;22805:47;22869:131;22995:4;22869:131;:::i;:::-;22861:139;;22588:419;;;:::o;23013:228::-;23153:34;23149:1;23141:6;23137:14;23130:58;23222:11;23217:2;23209:6;23205:15;23198:36;23013:228;:::o;23247:366::-;23389:3;23410:67;23474:2;23469:3;23410:67;:::i;:::-;23403:74;;23486:93;23575:3;23486:93;:::i;:::-;23604:2;23599:3;23595:12;23588:19;;23247:366;;;:::o;23619:419::-;23785:4;23823:2;23812:9;23808:18;23800:26;;23872:9;23866:4;23862:20;23858:1;23847:9;23843:17;23836:47;23900:131;24026:4;23900:131;:::i;:::-;23892:139;;23619:419;;;:::o;24044:225::-;24184:34;24180:1;24172:6;24168:14;24161:58;24253:8;24248:2;24240:6;24236:15;24229:33;24044:225;:::o;24275:366::-;24417:3;24438:67;24502:2;24497:3;24438:67;:::i;:::-;24431:74;;24514:93;24603:3;24514:93;:::i;:::-;24632:2;24627:3;24623:12;24616:19;;24275:366;;;:::o;24647:419::-;24813:4;24851:2;24840:9;24836:18;24828:26;;24900:9;24894:4;24890:20;24886:1;24875:9;24871:17;24864:47;24928:131;25054:4;24928:131;:::i;:::-;24920:139;;24647:419;;;:::o;25072:180::-;25120:77;25117:1;25110:88;25217:4;25214:1;25207:15;25241:4;25238:1;25231:15;25258:180;25306:77;25303:1;25296:88;25403:4;25400:1;25393:15;25427:4;25424:1;25417:15;25444:143;25501:5;25532:6;25526:13;25517:22;;25548:33;25575:5;25548:33;:::i;:::-;25444:143;;;;:::o;25593:351::-;25663:6;25712:2;25700:9;25691:7;25687:23;25683:32;25680:119;;;25718:79;;:::i;:::-;25680:119;25838:1;25863:64;25919:7;25910:6;25899:9;25895:22;25863:64;:::i;:::-;25853:74;;25809:128;25593:351;;;;:::o;25950:85::-;25995:7;26024:5;26013:16;;25950:85;;;:::o;26041:158::-;26099:9;26132:61;26150:42;26159:32;26185:5;26159:32;:::i;:::-;26150:42;:::i;:::-;26132:61;:::i;:::-;26119:74;;26041:158;;;:::o;26205:147::-;26300:45;26339:5;26300:45;:::i;:::-;26295:3;26288:58;26205:147;;:::o;26358:114::-;26425:6;26459:5;26453:12;26443:22;;26358:114;;;:::o;26478:184::-;26577:11;26611:6;26606:3;26599:19;26651:4;26646:3;26642:14;26627:29;;26478:184;;;;:::o;26668:132::-;26735:4;26758:3;26750:11;;26788:4;26783:3;26779:14;26771:22;;26668:132;;;:::o;26806:108::-;26883:24;26901:5;26883:24;:::i;:::-;26878:3;26871:37;26806:108;;:::o;26920:179::-;26989:10;27010:46;27052:3;27044:6;27010:46;:::i;:::-;27088:4;27083:3;27079:14;27065:28;;26920:179;;;;:::o;27105:113::-;27175:4;27207;27202:3;27198:14;27190:22;;27105:113;;;:::o;27254:732::-;27373:3;27402:54;27450:5;27402:54;:::i;:::-;27472:86;27551:6;27546:3;27472:86;:::i;:::-;27465:93;;27582:56;27632:5;27582:56;:::i;:::-;27661:7;27692:1;27677:284;27702:6;27699:1;27696:13;27677:284;;;27778:6;27772:13;27805:63;27864:3;27849:13;27805:63;:::i;:::-;27798:70;;27891:60;27944:6;27891:60;:::i;:::-;27881:70;;27737:224;27724:1;27721;27717:9;27712:14;;27677:284;;;27681:14;27977:3;27970:10;;27378:608;;;27254:732;;;;:::o;27992:831::-;28255:4;28293:3;28282:9;28278:19;28270:27;;28307:71;28375:1;28364:9;28360:17;28351:6;28307:71;:::i;:::-;28388:80;28464:2;28453:9;28449:18;28440:6;28388:80;:::i;:::-;28515:9;28509:4;28505:20;28500:2;28489:9;28485:18;28478:48;28543:108;28646:4;28637:6;28543:108;:::i;:::-;28535:116;;28661:72;28729:2;28718:9;28714:18;28705:6;28661:72;:::i;:::-;28743:73;28811:3;28800:9;28796:19;28787:6;28743:73;:::i;:::-;27992:831;;;;;;;;:::o;28829:220::-;28969:34;28965:1;28957:6;28953:14;28946:58;29038:3;29033:2;29025:6;29021:15;29014:28;28829:220;:::o;29055:366::-;29197:3;29218:67;29282:2;29277:3;29218:67;:::i;:::-;29211:74;;29294:93;29383:3;29294:93;:::i;:::-;29412:2;29407:3;29403:12;29396:19;;29055:366;;;:::o;29427:419::-;29593:4;29631:2;29620:9;29616:18;29608:26;;29680:9;29674:4;29670:20;29666:1;29655:9;29651:17;29644:47;29708:131;29834:4;29708:131;:::i;:::-;29700:139;;29427:419;;;:::o;29852:221::-;29992:34;29988:1;29980:6;29976:14;29969:58;30061:4;30056:2;30048:6;30044:15;30037:29;29852:221;:::o;30079:366::-;30221:3;30242:67;30306:2;30301:3;30242:67;:::i;:::-;30235:74;;30318:93;30407:3;30318:93;:::i;:::-;30436:2;30431:3;30427:12;30420:19;;30079:366;;;:::o;30451:419::-;30617:4;30655:2;30644:9;30640:18;30632:26;;30704:9;30698:4;30694:20;30690:1;30679:9;30675:17;30668:47;30732:131;30858:4;30732:131;:::i;:::-;30724:139;;30451:419;;;:::o;30876:170::-;31016:22;31012:1;31004:6;31000:14;30993:46;30876:170;:::o;31052:366::-;31194:3;31215:67;31279:2;31274:3;31215:67;:::i;:::-;31208:74;;31291:93;31380:3;31291:93;:::i;:::-;31409:2;31404:3;31400:12;31393:19;;31052:366;;;:::o;31424:419::-;31590:4;31628:2;31617:9;31613:18;31605:26;;31677:9;31671:4;31667:20;31663:1;31652:9;31648:17;31641:47;31705:131;31831:4;31705:131;:::i;:::-;31697:139;;31424:419;;;:::o;31849:410::-;31889:7;31912:20;31930:1;31912:20;:::i;:::-;31907:25;;31946:20;31964:1;31946:20;:::i;:::-;31941:25;;32001:1;31998;31994:9;32023:30;32041:11;32023:30;:::i;:::-;32012:41;;32202:1;32193:7;32189:15;32186:1;32183:22;32163:1;32156:9;32136:83;32113:139;;32232:18;;:::i;:::-;32113:139;31897:362;31849:410;;;;:::o;32265:180::-;32313:77;32310:1;32303:88;32410:4;32407:1;32400:15;32434:4;32431:1;32424:15;32451:185;32491:1;32508:20;32526:1;32508:20;:::i;:::-;32503:25;;32542:20;32560:1;32542:20;:::i;:::-;32537:25;;32581:1;32571:35;;32586:18;;:::i;:::-;32571:35;32628:1;32625;32621:9;32616:14;;32451:185;;;;:::o

Swarm Source

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