ETH Price: $3,635.07 (+8.09%)
Gas: 9.33 Gwei

Token

TBet Finance (TBF)
 

Overview

Max Total Supply

1,000,000,000 TBF

Holders

50

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
14,000,000 TBF

Value
$0.00
0x6C29d02550aa19B34BaAc588723B58bB87352732
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:
TBetFinance

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-02
*/

// website  : https://tbet.finance
// twitter  : https://twitter.com/tbet_erc
// telegram : https://t.me/Tbet_erc
// docs     : https://docs.tbet.finance

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File @openzeppelin/contracts/access/[email protected]

// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File @openzeppelin/contracts/token/ERC20/[email protected]

// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

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

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

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

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

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

// File contracts/IUniswap.sol

// Original license: SPDX_License_Identifier: MIT
pragma solidity ^0.8.0;

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

    function token0() external view returns (address);

    function sync() external;
}

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

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

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

    function WETH() external pure returns (address);

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

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

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

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

pragma solidity 0.8.21;

abstract contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor(
        string memory _tokenName,
        string memory _tokenSymbol,
        uint8 _tokenDecimals
    ) {
        _name = _tokenName;
        _symbol = _tokenSymbol;
        _decimals = _tokenDecimals;
    }

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

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

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

contract TBetFinance is ERC20Detailed, Ownable {
    uint256 public maxAmount;
    uint256 public maxWallet;

    address public marketingWallet;
    address public treasuryAdress;

    uint256 public marketingBuyFee = 2;
    uint256 public marketingSellFee = 2;

    uint256 public treasuryBuyFee = 1;
    uint256 public treasurySellFee = 3;

    uint256 public buyTax = marketingBuyFee + treasuryBuyFee;
    uint256 public sellTax = marketingSellFee + treasurySellFee;

    uint256 private _initialTax = 30;
    uint256 private _reduceTaxAt = 20;

    uint256 private _buyCount = 0;
    uint256 private _sellCount = 0;

    uint8 private constant DECIMALS = 18;
    event RemovedLimits();

    IUniswapRouter public router;
    address public pair;

    bool public limitsInEffect = true;
    bool public tradingEnable = false;

    uint256 private _totalSupply = 1_000_000_000 * 10**DECIMALS;

    uint256 private swapTokenAtAmount = _totalSupply / 200; // 0.5% of total supply

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowedTokens;
    mapping(address => bool) public isExcludedFromFees;

    modifier validRecipient(address to) {
        require(to != address(0x0));
        _;
    }

    bool inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() ERC20Detailed("TBet Finance", "TBF", DECIMALS) {
        marketingWallet = 0x721d4c65921743bdc741E53310d68B0257413A05;
        treasuryAdress = 0x5566e17a58a7B399BE7E3564371452db91b3bcd6;

        router = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _balances[msg.sender] = _totalSupply;

        maxAmount = (_totalSupply * 2) / 100;
        maxWallet = (_totalSupply * 2) / 100;

        pair = IFactory(router.factory()).createPair(
            address(this),
            router.WETH()
        );

        isExcludedFromFees[address(this)] = true;
        isExcludedFromFees[address(router)] = true;
        isExcludedFromFees[msg.sender] = true;
        isExcludedFromFees[marketingWallet] = true;
        isExcludedFromFees[treasuryAdress] = true;

        _allowedTokens[address(this)][address(router)] = type(uint256).max;
        _allowedTokens[address(this)][address(this)] = type(uint256).max;
        _allowedTokens[address(msg.sender)][address(router)] = type(uint256)
            .max;

        emit Transfer(address(0x0), msg.sender, _totalSupply);
    }

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

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

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

    function transfer(address to, uint256 value)
        external
        override
        validRecipient(to)
        returns (bool)
    {
        _transferFrom(msg.sender, to, value);
        return true;
    }

    function removeLimits() external onlyOwner {
        require(limitsInEffect, "Limits already removed");
        limitsInEffect = false;
        emit RemovedLimits();
    }

    function excludedFromFees(address _address, bool _value)
        external
        onlyOwner
    {
        isExcludedFromFees[_address] = _value;
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if (
            !inSwap &&
            !isExcludedFromFees[sender] &&
            !isExcludedFromFees[recipient]
        ) {
            require(tradingEnable, "Trading not live");
            if (limitsInEffect) {
                if (sender == pair || recipient == pair) {
                    require(amount <= maxAmount, "Max Tx Exceeded");
                }
                if (recipient != pair) {
                    require(
                        balanceOf(recipient) + amount <= maxWallet,
                        "Max Wallet Exceeded"
                    );
                }
            }

            if (recipient == pair) {
                if (balanceOf(address(this)) >= swapTokenAtAmount) {
                    swapBack();
                }
            }

            if (sender == pair) {
                _buyCount += 1;

                uint256 taxAmount = (amount *
                    (_buyCount > _reduceTaxAt ? buyTax : _initialTax)) / 100;

                uint256 amountToTreasury = (taxAmount * treasuryBuyFee) /
                    (buyTax);
                uint256 amountToMarketing = taxAmount - amountToTreasury;

                _balances[sender] -= taxAmount;
                _balances[address(this)] += amountToMarketing;
                _balances[treasuryAdress] += amountToTreasury;

                emit Transfer(sender, address(this), amountToMarketing);
                emit Transfer(sender, treasuryAdress, amountToTreasury);

                amount -= taxAmount;
            } else if (recipient == pair) {
                _sellCount += 1;

                uint256 taxAmount = (amount *
                    (_sellCount > _reduceTaxAt ? sellTax : _initialTax)) / 100;

                uint256 amountToTreasury = (taxAmount * treasurySellFee) /
                    (sellTax);
                uint256 amountToMarketing = taxAmount - amountToTreasury;

                _balances[sender] -= taxAmount;
                _balances[address(this)] += amountToMarketing;
                _balances[treasuryAdress] += amountToTreasury;

                emit Transfer(sender, address(this), amountToMarketing);
                emit Transfer(sender, treasuryAdress, amountToTreasury);

                amount -= taxAmount;
            }
        }

        _balances[sender] -= amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external override validRecipient(to) returns (bool) {
        if (_allowedTokens[from][msg.sender] != type(uint256).max) {
            require(
                _allowedTokens[from][msg.sender] >= value,
                "Insufficient Allowance"
            );
            _allowedTokens[from][msg.sender] =
                _allowedTokens[from][msg.sender] -
                (value);
        }
        _transferFrom(from, to, value);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        returns (bool)
    {
        uint256 oldValue = _allowedTokens[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowedTokens[msg.sender][spender] = 0;
        } else {
            _allowedTokens[msg.sender][spender] = oldValue - (subtractedValue);
        }
        emit Approval(msg.sender, spender, _allowedTokens[msg.sender][spender]);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        external
        returns (bool)
    {
        _allowedTokens[msg.sender][spender] =
            _allowedTokens[msg.sender][spender] +
            (addedValue);
        emit Approval(msg.sender, spender, _allowedTokens[msg.sender][spender]);
        return true;
    }

    function approve(address spender, uint256 value)
        public
        override
        returns (bool)
    {
        _allowedTokens[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnable, "Trading Live Already");
        tradingEnable = true;
    }

    function swapBack() public swapping {
        uint256 amountToSwap = balanceOf(address(this));
        if (amountToSwap == 0) {
            return;
        }

        if (amountToSwap > swapTokenAtAmount) {
            amountToSwap = swapTokenAtAmount;
        }

        _swapTokensForETH(amountToSwap);

        if (address(this).balance > 0) {
            (bool success, ) = payable(marketingWallet).call{
                value: address(this).balance
            }("");
            require(success, "Failed to send ETH to marketing wallet");
        }
    }

    function _swapTokensForETH(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            payable(marketingWallet),
            block.timestamp
        );
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"excludedFromFees","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":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingSellFee","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":"maxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapBack","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":[],"name":"tradingEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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":"treasuryAdress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasurySellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526002600755600260085560016009556003600a556009546007546200002a919062000a9b565b600b55600a546008546200003f919062000a9b565b600c55601e600d556014600e555f600f555f6010556001601260146101000a81548160ff0219169083151502179055505f601260156101000a81548160ff0219169083151502179055506012600a62000099919062000c31565b633b9aca00620000aa919062000c81565b60135560c8601354620000be919062000cf8565b601455348015620000cd575f80fd5b506040518060400160405280600c81526020017f544265742046696e616e636500000000000000000000000000000000000000008152506040518060400160405280600381526020017f54424600000000000000000000000000000000000000000000000000000000008152506012825f90816200014c919062000f8a565b5081600190816200015e919062000f8a565b508060025f6101000a81548160ff021916908360ff1602179055505050506200019c620001906200099960201b60201c565b620009a060201b60201c565b73721d4c65921743bdc741e53310d68b0257413a0560055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735566e17a58a7b399be7e3564371452db91b3bcd660065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135460155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060646002601354620002ef919062000c81565b620002fb919062000cf8565b6003819055506064600260135462000314919062000c81565b62000320919062000cf8565b60048190555060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000391573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003b79190620010d3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200043e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004649190620010d3565b6040518363ffffffff1660e01b81526004016200048392919062001114565b6020604051808303815f875af1158015620004a0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004c69190620010d3565b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160175f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160175f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160175f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160175f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160175f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60165f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60165f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6013546040516200098b919062001150565b60405180910390a36200116b565b5f33905090565b5f600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000aa78262000a65565b915062000ab48362000a65565b925082820190508082111562000acf5762000ace62000a6e565b5b92915050565b5f8160011c9050919050565b5f808291508390505b600185111562000b325780860481111562000b0a5762000b0962000a6e565b5b600185161562000b1a5780820291505b808102905062000b2a8562000ad5565b945062000aea565b94509492505050565b5f8262000b4c576001905062000c1e565b8162000b5b575f905062000c1e565b816001811462000b74576002811462000b7f5762000bb5565b600191505062000c1e565b60ff84111562000b945762000b9362000a6e565b5b8360020a91508482111562000bae5762000bad62000a6e565b5b5062000c1e565b5060208310610133831016604e8410600b841016171562000bef5782820a90508381111562000be95762000be862000a6e565b5b62000c1e565b62000bfe848484600162000ae1565b9250905081840481111562000c185762000c1762000a6e565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000c3d8262000a65565b915062000c4a8362000c25565b925062000c797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b3b565b905092915050565b5f62000c8d8262000a65565b915062000c9a8362000a65565b925082820262000caa8162000a65565b9150828204841483151762000cc45762000cc362000a6e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000d048262000a65565b915062000d118362000a65565b92508262000d245762000d2362000ccb565b5b828204905092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000dab57607f821691505b60208210810362000dc15762000dc062000d66565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000e257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000de8565b62000e31868362000de8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000e7262000e6c62000e668462000a65565b62000e49565b62000a65565b9050919050565b5f819050919050565b62000e8d8362000e52565b62000ea562000e9c8262000e79565b84845462000df4565b825550505050565b5f90565b62000ebb62000ead565b62000ec881848462000e82565b505050565b5b8181101562000eef5762000ee35f8262000eb1565b60018101905062000ece565b5050565b601f82111562000f3e5762000f088162000dc7565b62000f138462000dd9565b8101602085101562000f23578190505b62000f3b62000f328562000dd9565b83018262000ecd565b50505b505050565b5f82821c905092915050565b5f62000f605f198460080262000f43565b1980831691505092915050565b5f62000f7a838362000f4f565b9150826002028217905092915050565b62000f958262000d2f565b67ffffffffffffffff81111562000fb15762000fb062000d39565b5b62000fbd825462000d93565b62000fca82828562000ef3565b5f60209050601f83116001811462001000575f841562000feb578287015190505b62000ff7858262000f6d565b86555062001066565b601f198416620010108662000dc7565b5f5b82811015620010395784890151825560018201915060208501945060208101905062001012565b8683101562001059578489015162001055601f89168262000f4f565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200109d8262001072565b9050919050565b620010af8162001091565b8114620010ba575f80fd5b50565b5f81519050620010cd81620010a4565b92915050565b5f60208284031215620010eb57620010ea6200106e565b5b5f620010fa84828501620010bd565b91505092915050565b6200110e8162001091565b82525050565b5f604082019050620011295f83018562001103565b62001138602083018462001103565b9392505050565b6200114a8162000a65565b82525050565b5f602082019050620011655f8301846200113f565b92915050565b612fa780620011795f395ff3fe6080604052600436106101f1575f3560e01c806370a082311161010c578063a8aa1b311161009f578063e7f444b31161006e578063e7f444b3146106d2578063ed0d2137146106fc578063f2fde38b14610726578063f887ea401461074e578063f8b45b0514610778576101f8565b8063a8aa1b3114610606578063a9059cbb14610630578063cc1776d31461066c578063dd62ed3e14610696576101f8565b80638a8c523c116100db5780638a8c523c146105605780638da5cb5b1461057657806395d89b41146105a0578063a457c2d7146105ca576101f8565b806370a08231146104ce578063715018a61461050a578063751039fc1461052057806375f0a87414610536576101f8565b8063313ce567116101845780634fbee193116101535780634fbee193146104285780635f48f39314610464578063680789521461048e5780636ac5eeee146104b8576101f8565b8063313ce5671461036e57806339509351146103985780634a62bb65146103d45780634f7041a5146103fe576101f8565b80631693e8d4116101c05780631693e8d4146102b457806318160ddd146102de57806323b872dd146103085780632c10508c14610344576101f8565b8063019f735e146101fc57806306fdde0314610226578063095ea7b31461025057806316697fc51461028c576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b506102106107a2565b60405161021d9190612427565b60405180910390f35b348015610231575f80fd5b5061023a6107c7565b60405161024791906124ca565b60405180910390f35b34801561025b575f80fd5b506102766004803603810190610271919061254b565b610856565b60405161028391906125a3565b60405180910390f35b348015610297575f80fd5b506102b260048036038101906102ad91906125e6565b610943565b005b3480156102bf575f80fd5b506102c86109a3565b6040516102d591906125a3565b60405180910390f35b3480156102e9575f80fd5b506102f26109b6565b6040516102ff9190612633565b60405180910390f35b348015610313575f80fd5b5061032e6004803603810190610329919061264c565b6109bf565b60405161033b91906125a3565b60405180910390f35b34801561034f575f80fd5b50610358610c6b565b6040516103659190612633565b60405180910390f35b348015610379575f80fd5b50610382610c71565b60405161038f91906126b7565b60405180910390f35b3480156103a3575f80fd5b506103be60048036038101906103b9919061254b565b610c86565b6040516103cb91906125a3565b60405180910390f35b3480156103df575f80fd5b506103e8610e6e565b6040516103f591906125a3565b60405180910390f35b348015610409575f80fd5b50610412610e81565b60405161041f9190612633565b60405180910390f35b348015610433575f80fd5b5061044e600480360381019061044991906126d0565b610e87565b60405161045b91906125a3565b60405180910390f35b34801561046f575f80fd5b50610478610ea4565b6040516104859190612633565b60405180910390f35b348015610499575f80fd5b506104a2610eaa565b6040516104af9190612633565b60405180910390f35b3480156104c3575f80fd5b506104cc610eb0565b005b3480156104d9575f80fd5b506104f460048036038101906104ef91906126d0565b610fec565b6040516105019190612633565b60405180910390f35b348015610515575f80fd5b5061051e611032565b005b34801561052b575f80fd5b50610534611045565b005b348015610541575f80fd5b5061054a6110e4565b6040516105579190612427565b60405180910390f35b34801561056b575f80fd5b50610574611109565b005b348015610581575f80fd5b5061058a61117e565b6040516105979190612427565b60405180910390f35b3480156105ab575f80fd5b506105b46111a7565b6040516105c191906124ca565b60405180910390f35b3480156105d5575f80fd5b506105f060048036038101906105eb919061254b565b611237565b6040516105fd91906125a3565b60405180910390f35b348015610611575f80fd5b5061061a6114ae565b6040516106279190612427565b60405180910390f35b34801561063b575f80fd5b506106566004803603810190610651919061254b565b6114d3565b60405161066391906125a3565b60405180910390f35b348015610677575f80fd5b50610680611523565b60405161068d9190612633565b60405180910390f35b3480156106a1575f80fd5b506106bc60048036038101906106b791906126fb565b611529565b6040516106c99190612633565b60405180910390f35b3480156106dd575f80fd5b506106e66115ab565b6040516106f39190612633565b60405180910390f35b348015610707575f80fd5b506107106115b1565b60405161071d9190612633565b60405180910390f35b348015610731575f80fd5b5061074c600480360381019061074791906126d0565b6115b7565b005b348015610759575f80fd5b50610762611639565b60405161076f9190612794565b60405180910390f35b348015610783575f80fd5b5061078c61165e565b6040516107999190612633565b60405180910390f35b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60605f80546107d5906127da565b80601f0160208091040260200160405190810160405280929190818152602001828054610801906127da565b801561084c5780601f106108235761010080835404028352916020019161084c565b820191905f5260205f20905b81548152906001019060200180831161082f57829003601f168201915b5050505050905090565b5f8160165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109319190612633565b60405180910390a36001905092915050565b61094b611664565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601260159054906101000a900460ff1681565b5f601354905090565b5f825f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109f8575f80fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610c53578260165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4990612854565b60405180910390fd5b8260165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610bd6919061289f565b60165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610c5e8585856116e2565b5060019150509392505050565b60095481565b5f60025f9054906101000a900460ff16905090565b5f8160165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d0b91906128d2565b60165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051610e5c9190612633565b60405180910390a36001905092915050565b601260149054906101000a900460ff1681565b600b5481565b6017602052805f5260405f205f915054906101000a900460ff1681565b60035481565b60075481565b600160185f6101000a81548160ff0219169083151502179055505f610ed430610fec565b90505f8103610ee35750610fd1565b601454811115610ef35760145490505b610efc816120f1565b5f471115610fcf575f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610f4a90612932565b5f6040518083038185875af1925050503d805f8114610f84576040519150601f19603f3d011682016040523d82523d5f602084013e610f89565b606091505b5050905080610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc4906129b6565b60405180910390fd5b505b505b5f60185f6101000a81548160ff021916908315150217905550565b5f60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61103a611664565b6110435f61231c565b565b61104d611664565b601260149054906101000a900460ff1661109c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109390612a1e565b60405180910390fd5b5f601260146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611111611664565b601260159054906101000a900460ff1615611161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115890612a86565b60405180910390fd5b6001601260156101000a81548160ff021916908315150217905550565b5f600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546111b6906127da565b80601f01602080910402602001604051908101604052809291908181526020018280546111e2906127da565b801561122d5780601f106112045761010080835404028352916020019161122d565b820191905f5260205f20905b81548152906001019060200180831161121057829003601f168201915b5050505050905090565b5f8060165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905080831061133d575f60165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506113c6565b8281611349919061289f565b60165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405161149b9190612633565b60405180910390a3600191505092915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f825f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361150c575f80fd5b6115173385856116e2565b50600191505092915050565b600c5481565b5f60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b600a5481565b6115bf611664565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361162d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162490612b14565b60405180910390fd5b6116368161231c565b50565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b61166c6123e1565b73ffffffffffffffffffffffffffffffffffffffff1661168a61117e565b73ffffffffffffffffffffffffffffffffffffffff16146116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d790612b7c565b60405180910390fd5b565b5f60185f9054906101000a900460ff16158015611746575060175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611799575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fdb57601260159054906101000a900460ff166117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e490612be4565b60405180910390fd5b601260149054906101000a900460ff16156119a25760125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806118a9575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156118f4576003548211156118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea90612c4c565b60405180910390fd5b5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119a1576004548261195585610fec565b61195f91906128d2565b11156119a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199790612cb4565b60405180910390fd5b5b5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a1157601454611a0230610fec565b10611a1057611a0f610eb0565b5b5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611cf7576001600f5f828254611a7791906128d2565b925050819055505f6064600e54600f5411611a9457600d54611a98565b600b545b84611aa39190612cd2565b611aad9190612d40565b90505f600b5460095483611ac19190612cd2565b611acb9190612d40565b90505f8183611ada919061289f565b90508260155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b28919061289f565b925050819055508060155f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b7b91906128d2565b925050819055508160155f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bef91906128d2565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c539190612633565b60405180910390a360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cd99190612633565b60405180910390a38285611ced919061289f565b9450505050611fda565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fd957600160105f828254611d5d91906128d2565b925050819055505f6064600e5460105411611d7a57600d54611d7e565b600c545b84611d899190612cd2565b611d939190612d40565b90505f600c54600a5483611da79190612cd2565b611db19190612d40565b90505f8183611dc0919061289f565b90508260155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611e0e919061289f565b925050819055508060155f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611e6191906128d2565b925050819055508160155f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611ed591906128d2565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f399190612633565b60405180910390a360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fbf9190612633565b60405180910390a38285611fd3919061289f565b94505050505b5b5b8160155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612027919061289f565b925050819055508160155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461207a91906128d2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120de9190612633565b60405180910390a3600190509392505050565b5f600267ffffffffffffffff81111561210d5761210c612d70565b5b60405190808252806020026020018201604052801561213b5781602001602082028036833780820191505090505b50905030815f8151811061215257612151612d9d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061221a9190612dde565b8160018151811061222e5761222d612d9d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016122eb959493929190612f19565b5f604051808303815f87803b158015612302575f80fd5b505af1158015612314573d5f803e3d5ffd5b505050505050565b5f600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612411826123e8565b9050919050565b61242181612407565b82525050565b5f60208201905061243a5f830184612418565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561247757808201518184015260208101905061245c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61249c82612440565b6124a6818561244a565b93506124b681856020860161245a565b6124bf81612482565b840191505092915050565b5f6020820190508181035f8301526124e28184612492565b905092915050565b5f80fd5b6124f781612407565b8114612501575f80fd5b50565b5f81359050612512816124ee565b92915050565b5f819050919050565b61252a81612518565b8114612534575f80fd5b50565b5f8135905061254581612521565b92915050565b5f8060408385031215612561576125606124ea565b5b5f61256e85828601612504565b925050602061257f85828601612537565b9150509250929050565b5f8115159050919050565b61259d81612589565b82525050565b5f6020820190506125b65f830184612594565b92915050565b6125c581612589565b81146125cf575f80fd5b50565b5f813590506125e0816125bc565b92915050565b5f80604083850312156125fc576125fb6124ea565b5b5f61260985828601612504565b925050602061261a858286016125d2565b9150509250929050565b61262d81612518565b82525050565b5f6020820190506126465f830184612624565b92915050565b5f805f60608486031215612663576126626124ea565b5b5f61267086828701612504565b935050602061268186828701612504565b925050604061269286828701612537565b9150509250925092565b5f60ff82169050919050565b6126b18161269c565b82525050565b5f6020820190506126ca5f8301846126a8565b92915050565b5f602082840312156126e5576126e46124ea565b5b5f6126f284828501612504565b91505092915050565b5f8060408385031215612711576127106124ea565b5b5f61271e85828601612504565b925050602061272f85828601612504565b9150509250929050565b5f819050919050565b5f61275c612757612752846123e8565b612739565b6123e8565b9050919050565b5f61276d82612742565b9050919050565b5f61277e82612763565b9050919050565b61278e81612774565b82525050565b5f6020820190506127a75f830184612785565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806127f157607f821691505b602082108103612804576128036127ad565b5b50919050565b7f496e73756666696369656e7420416c6c6f77616e6365000000000000000000005f82015250565b5f61283e60168361244a565b91506128498261280a565b602082019050919050565b5f6020820190508181035f83015261286b81612832565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128a982612518565b91506128b483612518565b92508282039050818111156128cc576128cb612872565b5b92915050565b5f6128dc82612518565b91506128e783612518565b92508282019050808211156128ff576128fe612872565b5b92915050565b5f81905092915050565b50565b5f61291d5f83612905565b91506129288261290f565b5f82019050919050565b5f61293c82612912565b9150819050919050565b7f4661696c656420746f2073656e642045544820746f206d61726b6574696e67205f8201527f77616c6c65740000000000000000000000000000000000000000000000000000602082015250565b5f6129a060268361244a565b91506129ab82612946565b604082019050919050565b5f6020820190508181035f8301526129cd81612994565b9050919050565b7f4c696d69747320616c72656164792072656d6f766564000000000000000000005f82015250565b5f612a0860168361244a565b9150612a13826129d4565b602082019050919050565b5f6020820190508181035f830152612a35816129fc565b9050919050565b7f54726164696e67204c69766520416c72656164790000000000000000000000005f82015250565b5f612a7060148361244a565b9150612a7b82612a3c565b602082019050919050565b5f6020820190508181035f830152612a9d81612a64565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612afe60268361244a565b9150612b0982612aa4565b604082019050919050565b5f6020820190508181035f830152612b2b81612af2565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b6660208361244a565b9150612b7182612b32565b602082019050919050565b5f6020820190508181035f830152612b9381612b5a565b9050919050565b7f54726164696e67206e6f74206c697665000000000000000000000000000000005f82015250565b5f612bce60108361244a565b9150612bd982612b9a565b602082019050919050565b5f6020820190508181035f830152612bfb81612bc2565b9050919050565b7f4d617820547820457863656564656400000000000000000000000000000000005f82015250565b5f612c36600f8361244a565b9150612c4182612c02565b602082019050919050565b5f6020820190508181035f830152612c6381612c2a565b9050919050565b7f4d61782057616c6c6574204578636565646564000000000000000000000000005f82015250565b5f612c9e60138361244a565b9150612ca982612c6a565b602082019050919050565b5f6020820190508181035f830152612ccb81612c92565b9050919050565b5f612cdc82612518565b9150612ce783612518565b9250828202612cf581612518565b91508282048414831517612d0c57612d0b612872565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d4a82612518565b9150612d5583612518565b925082612d6557612d64612d13565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612dd8816124ee565b92915050565b5f60208284031215612df357612df26124ea565b5b5f612e0084828501612dca565b91505092915050565b5f819050919050565b5f612e2c612e27612e2284612e09565b612739565b612518565b9050919050565b612e3c81612e12565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612e7481612407565b82525050565b5f612e858383612e6b565b60208301905092915050565b5f602082019050919050565b5f612ea782612e42565b612eb18185612e4c565b9350612ebc83612e5c565b805f5b83811015612eec578151612ed38882612e7a565b9750612ede83612e91565b925050600181019050612ebf565b5085935050505092915050565b5f612f0382612763565b9050919050565b612f1381612ef9565b82525050565b5f60a082019050612f2c5f830188612624565b612f396020830187612e33565b8181036040830152612f4b8186612e9d565b9050612f5a6060830185612f0a565b612f676080830184612624565b969550505050505056fea26469706673582212205506ec3dc00eb811b2cfdfb5212c7c3fc2e529b36be7f3574089ead7a9bc0d6b64736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101f1575f3560e01c806370a082311161010c578063a8aa1b311161009f578063e7f444b31161006e578063e7f444b3146106d2578063ed0d2137146106fc578063f2fde38b14610726578063f887ea401461074e578063f8b45b0514610778576101f8565b8063a8aa1b3114610606578063a9059cbb14610630578063cc1776d31461066c578063dd62ed3e14610696576101f8565b80638a8c523c116100db5780638a8c523c146105605780638da5cb5b1461057657806395d89b41146105a0578063a457c2d7146105ca576101f8565b806370a08231146104ce578063715018a61461050a578063751039fc1461052057806375f0a87414610536576101f8565b8063313ce567116101845780634fbee193116101535780634fbee193146104285780635f48f39314610464578063680789521461048e5780636ac5eeee146104b8576101f8565b8063313ce5671461036e57806339509351146103985780634a62bb65146103d45780634f7041a5146103fe576101f8565b80631693e8d4116101c05780631693e8d4146102b457806318160ddd146102de57806323b872dd146103085780632c10508c14610344576101f8565b8063019f735e146101fc57806306fdde0314610226578063095ea7b31461025057806316697fc51461028c576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b506102106107a2565b60405161021d9190612427565b60405180910390f35b348015610231575f80fd5b5061023a6107c7565b60405161024791906124ca565b60405180910390f35b34801561025b575f80fd5b506102766004803603810190610271919061254b565b610856565b60405161028391906125a3565b60405180910390f35b348015610297575f80fd5b506102b260048036038101906102ad91906125e6565b610943565b005b3480156102bf575f80fd5b506102c86109a3565b6040516102d591906125a3565b60405180910390f35b3480156102e9575f80fd5b506102f26109b6565b6040516102ff9190612633565b60405180910390f35b348015610313575f80fd5b5061032e6004803603810190610329919061264c565b6109bf565b60405161033b91906125a3565b60405180910390f35b34801561034f575f80fd5b50610358610c6b565b6040516103659190612633565b60405180910390f35b348015610379575f80fd5b50610382610c71565b60405161038f91906126b7565b60405180910390f35b3480156103a3575f80fd5b506103be60048036038101906103b9919061254b565b610c86565b6040516103cb91906125a3565b60405180910390f35b3480156103df575f80fd5b506103e8610e6e565b6040516103f591906125a3565b60405180910390f35b348015610409575f80fd5b50610412610e81565b60405161041f9190612633565b60405180910390f35b348015610433575f80fd5b5061044e600480360381019061044991906126d0565b610e87565b60405161045b91906125a3565b60405180910390f35b34801561046f575f80fd5b50610478610ea4565b6040516104859190612633565b60405180910390f35b348015610499575f80fd5b506104a2610eaa565b6040516104af9190612633565b60405180910390f35b3480156104c3575f80fd5b506104cc610eb0565b005b3480156104d9575f80fd5b506104f460048036038101906104ef91906126d0565b610fec565b6040516105019190612633565b60405180910390f35b348015610515575f80fd5b5061051e611032565b005b34801561052b575f80fd5b50610534611045565b005b348015610541575f80fd5b5061054a6110e4565b6040516105579190612427565b60405180910390f35b34801561056b575f80fd5b50610574611109565b005b348015610581575f80fd5b5061058a61117e565b6040516105979190612427565b60405180910390f35b3480156105ab575f80fd5b506105b46111a7565b6040516105c191906124ca565b60405180910390f35b3480156105d5575f80fd5b506105f060048036038101906105eb919061254b565b611237565b6040516105fd91906125a3565b60405180910390f35b348015610611575f80fd5b5061061a6114ae565b6040516106279190612427565b60405180910390f35b34801561063b575f80fd5b506106566004803603810190610651919061254b565b6114d3565b60405161066391906125a3565b60405180910390f35b348015610677575f80fd5b50610680611523565b60405161068d9190612633565b60405180910390f35b3480156106a1575f80fd5b506106bc60048036038101906106b791906126fb565b611529565b6040516106c99190612633565b60405180910390f35b3480156106dd575f80fd5b506106e66115ab565b6040516106f39190612633565b60405180910390f35b348015610707575f80fd5b506107106115b1565b60405161071d9190612633565b60405180910390f35b348015610731575f80fd5b5061074c600480360381019061074791906126d0565b6115b7565b005b348015610759575f80fd5b50610762611639565b60405161076f9190612794565b60405180910390f35b348015610783575f80fd5b5061078c61165e565b6040516107999190612633565b60405180910390f35b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60605f80546107d5906127da565b80601f0160208091040260200160405190810160405280929190818152602001828054610801906127da565b801561084c5780601f106108235761010080835404028352916020019161084c565b820191905f5260205f20905b81548152906001019060200180831161082f57829003601f168201915b5050505050905090565b5f8160165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109319190612633565b60405180910390a36001905092915050565b61094b611664565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601260159054906101000a900460ff1681565b5f601354905090565b5f825f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109f8575f80fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610c53578260165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4990612854565b60405180910390fd5b8260165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610bd6919061289f565b60165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610c5e8585856116e2565b5060019150509392505050565b60095481565b5f60025f9054906101000a900460ff16905090565b5f8160165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d0b91906128d2565b60165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051610e5c9190612633565b60405180910390a36001905092915050565b601260149054906101000a900460ff1681565b600b5481565b6017602052805f5260405f205f915054906101000a900460ff1681565b60035481565b60075481565b600160185f6101000a81548160ff0219169083151502179055505f610ed430610fec565b90505f8103610ee35750610fd1565b601454811115610ef35760145490505b610efc816120f1565b5f471115610fcf575f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610f4a90612932565b5f6040518083038185875af1925050503d805f8114610f84576040519150601f19603f3d011682016040523d82523d5f602084013e610f89565b606091505b5050905080610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc4906129b6565b60405180910390fd5b505b505b5f60185f6101000a81548160ff021916908315150217905550565b5f60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61103a611664565b6110435f61231c565b565b61104d611664565b601260149054906101000a900460ff1661109c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109390612a1e565b60405180910390fd5b5f601260146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611111611664565b601260159054906101000a900460ff1615611161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115890612a86565b60405180910390fd5b6001601260156101000a81548160ff021916908315150217905550565b5f600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546111b6906127da565b80601f01602080910402602001604051908101604052809291908181526020018280546111e2906127da565b801561122d5780601f106112045761010080835404028352916020019161122d565b820191905f5260205f20905b81548152906001019060200180831161121057829003601f168201915b5050505050905090565b5f8060165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905080831061133d575f60165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506113c6565b8281611349919061289f565b60165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405161149b9190612633565b60405180910390a3600191505092915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f825f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361150c575f80fd5b6115173385856116e2565b50600191505092915050565b600c5481565b5f60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b600a5481565b6115bf611664565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361162d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162490612b14565b60405180910390fd5b6116368161231c565b50565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b61166c6123e1565b73ffffffffffffffffffffffffffffffffffffffff1661168a61117e565b73ffffffffffffffffffffffffffffffffffffffff16146116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d790612b7c565b60405180910390fd5b565b5f60185f9054906101000a900460ff16158015611746575060175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611799575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fdb57601260159054906101000a900460ff166117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e490612be4565b60405180910390fd5b601260149054906101000a900460ff16156119a25760125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806118a9575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156118f4576003548211156118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea90612c4c565b60405180910390fd5b5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119a1576004548261195585610fec565b61195f91906128d2565b11156119a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199790612cb4565b60405180910390fd5b5b5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a1157601454611a0230610fec565b10611a1057611a0f610eb0565b5b5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611cf7576001600f5f828254611a7791906128d2565b925050819055505f6064600e54600f5411611a9457600d54611a98565b600b545b84611aa39190612cd2565b611aad9190612d40565b90505f600b5460095483611ac19190612cd2565b611acb9190612d40565b90505f8183611ada919061289f565b90508260155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b28919061289f565b925050819055508060155f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b7b91906128d2565b925050819055508160155f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bef91906128d2565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c539190612633565b60405180910390a360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cd99190612633565b60405180910390a38285611ced919061289f565b9450505050611fda565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fd957600160105f828254611d5d91906128d2565b925050819055505f6064600e5460105411611d7a57600d54611d7e565b600c545b84611d899190612cd2565b611d939190612d40565b90505f600c54600a5483611da79190612cd2565b611db19190612d40565b90505f8183611dc0919061289f565b90508260155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611e0e919061289f565b925050819055508060155f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611e6191906128d2565b925050819055508160155f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611ed591906128d2565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f399190612633565b60405180910390a360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fbf9190612633565b60405180910390a38285611fd3919061289f565b94505050505b5b5b8160155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612027919061289f565b925050819055508160155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461207a91906128d2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120de9190612633565b60405180910390a3600190509392505050565b5f600267ffffffffffffffff81111561210d5761210c612d70565b5b60405190808252806020026020018201604052801561213b5781602001602082028036833780820191505090505b50905030815f8151811061215257612151612d9d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061221a9190612dde565b8160018151811061222e5761222d612d9d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016122eb959493929190612f19565b5f604051808303815f87803b158015612302575f80fd5b505af1158015612314573d5f803e3d5ffd5b505050505050565b5f600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612411826123e8565b9050919050565b61242181612407565b82525050565b5f60208201905061243a5f830184612418565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561247757808201518184015260208101905061245c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61249c82612440565b6124a6818561244a565b93506124b681856020860161245a565b6124bf81612482565b840191505092915050565b5f6020820190508181035f8301526124e28184612492565b905092915050565b5f80fd5b6124f781612407565b8114612501575f80fd5b50565b5f81359050612512816124ee565b92915050565b5f819050919050565b61252a81612518565b8114612534575f80fd5b50565b5f8135905061254581612521565b92915050565b5f8060408385031215612561576125606124ea565b5b5f61256e85828601612504565b925050602061257f85828601612537565b9150509250929050565b5f8115159050919050565b61259d81612589565b82525050565b5f6020820190506125b65f830184612594565b92915050565b6125c581612589565b81146125cf575f80fd5b50565b5f813590506125e0816125bc565b92915050565b5f80604083850312156125fc576125fb6124ea565b5b5f61260985828601612504565b925050602061261a858286016125d2565b9150509250929050565b61262d81612518565b82525050565b5f6020820190506126465f830184612624565b92915050565b5f805f60608486031215612663576126626124ea565b5b5f61267086828701612504565b935050602061268186828701612504565b925050604061269286828701612537565b9150509250925092565b5f60ff82169050919050565b6126b18161269c565b82525050565b5f6020820190506126ca5f8301846126a8565b92915050565b5f602082840312156126e5576126e46124ea565b5b5f6126f284828501612504565b91505092915050565b5f8060408385031215612711576127106124ea565b5b5f61271e85828601612504565b925050602061272f85828601612504565b9150509250929050565b5f819050919050565b5f61275c612757612752846123e8565b612739565b6123e8565b9050919050565b5f61276d82612742565b9050919050565b5f61277e82612763565b9050919050565b61278e81612774565b82525050565b5f6020820190506127a75f830184612785565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806127f157607f821691505b602082108103612804576128036127ad565b5b50919050565b7f496e73756666696369656e7420416c6c6f77616e6365000000000000000000005f82015250565b5f61283e60168361244a565b91506128498261280a565b602082019050919050565b5f6020820190508181035f83015261286b81612832565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128a982612518565b91506128b483612518565b92508282039050818111156128cc576128cb612872565b5b92915050565b5f6128dc82612518565b91506128e783612518565b92508282019050808211156128ff576128fe612872565b5b92915050565b5f81905092915050565b50565b5f61291d5f83612905565b91506129288261290f565b5f82019050919050565b5f61293c82612912565b9150819050919050565b7f4661696c656420746f2073656e642045544820746f206d61726b6574696e67205f8201527f77616c6c65740000000000000000000000000000000000000000000000000000602082015250565b5f6129a060268361244a565b91506129ab82612946565b604082019050919050565b5f6020820190508181035f8301526129cd81612994565b9050919050565b7f4c696d69747320616c72656164792072656d6f766564000000000000000000005f82015250565b5f612a0860168361244a565b9150612a13826129d4565b602082019050919050565b5f6020820190508181035f830152612a35816129fc565b9050919050565b7f54726164696e67204c69766520416c72656164790000000000000000000000005f82015250565b5f612a7060148361244a565b9150612a7b82612a3c565b602082019050919050565b5f6020820190508181035f830152612a9d81612a64565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612afe60268361244a565b9150612b0982612aa4565b604082019050919050565b5f6020820190508181035f830152612b2b81612af2565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b6660208361244a565b9150612b7182612b32565b602082019050919050565b5f6020820190508181035f830152612b9381612b5a565b9050919050565b7f54726164696e67206e6f74206c697665000000000000000000000000000000005f82015250565b5f612bce60108361244a565b9150612bd982612b9a565b602082019050919050565b5f6020820190508181035f830152612bfb81612bc2565b9050919050565b7f4d617820547820457863656564656400000000000000000000000000000000005f82015250565b5f612c36600f8361244a565b9150612c4182612c02565b602082019050919050565b5f6020820190508181035f830152612c6381612c2a565b9050919050565b7f4d61782057616c6c6574204578636565646564000000000000000000000000005f82015250565b5f612c9e60138361244a565b9150612ca982612c6a565b602082019050919050565b5f6020820190508181035f830152612ccb81612c92565b9050919050565b5f612cdc82612518565b9150612ce783612518565b9250828202612cf581612518565b91508282048414831517612d0c57612d0b612872565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d4a82612518565b9150612d5583612518565b925082612d6557612d64612d13565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612dd8816124ee565b92915050565b5f60208284031215612df357612df26124ea565b5b5f612e0084828501612dca565b91505092915050565b5f819050919050565b5f612e2c612e27612e2284612e09565b612739565b612518565b9050919050565b612e3c81612e12565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612e7481612407565b82525050565b5f612e858383612e6b565b60208301905092915050565b5f602082019050919050565b5f612ea782612e42565b612eb18185612e4c565b9350612ebc83612e5c565b805f5b83811015612eec578151612ed38882612e7a565b9750612ede83612e91565b925050600181019050612ebf565b5085935050505092915050565b5f612f0382612763565b9050919050565b612f1381612ef9565b82525050565b5f60a082019050612f2c5f830188612624565b612f396020830187612e33565b8181036040830152612f4b8186612e9d565b9050612f5a6060830185612f0a565b612f676080830184612624565b969550505050505056fea26469706673582212205506ec3dc00eb811b2cfdfb5212c7c3fc2e529b36be7f3574089ead7a9bc0d6b64736f6c63430008150033

Deployed Bytecode Sourcemap

9314:9080:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9469:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9038:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16968:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12717:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10138:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11883:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15528:567;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9592:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9224:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16612:348;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10098:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9675:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10464:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9368:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9507:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17373:578;;;;;;;;;;;;;:::i;:::-;;12192:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2930:103;;;;;;;;;;;;;:::i;:::-;;12534:175;;;;;;;;;;;;;:::i;:::-;;9432:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17224:141;;;;;;;;;;;;;:::i;:::-;;2289:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9129;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16103:501;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10070:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12311:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9738:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11993:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9548:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9632:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3188:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10035:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9399:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9469:29;;;;;;;;;;;;;:::o;9038:83::-;9075:13;9108:5;9101:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9038:83;:::o;16968:248::-;17069:4;17129:5;17091:14;:26;17106:10;17091:26;;;;;;;;;;;;;;;:35;17118:7;17091:35;;;;;;;;;;;;;;;:43;;;;17171:7;17150:36;;17159:10;17150:36;;;17180:5;17150:36;;;;;;:::i;:::-;;;;;;;;17204:4;17197:11;;16968:248;;;;:::o;12717:155::-;2175:13;:11;:13::i;:::-;12858:6:::1;12827:18;:28;12846:8;12827:28;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;12717:155:::0;;:::o;10138:33::-;;;;;;;;;;;;;:::o;11883:102::-;11938:7;11965:12;;11958:19;;11883:102;:::o;15528:567::-;15671:4;15658:2;10592:3;10578:18;;:2;:18;;;10570:27;;;;;;15728:17:::1;15692:14;:20;15707:4;15692:20;;;;;;;;;;;;;;;:32;15713:10;15692:32;;;;;;;;;;;;;;;;:53;15688:337;;15824:5;15788:14;:20;15803:4;15788:20;;;;;;;;;;;;;;;:32;15809:10;15788:32;;;;;;;;;;;;;;;;:41;;15762:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;16007:5;15954:14;:20;15969:4;15954:20;;;;;;;;;;;;;;;:32;15975:10;15954:32;;;;;;;;;;;;;;;;:59;;;;:::i;:::-;15902:14;:20;15917:4;15902:20;;;;;;;;;;;;;;;:32;15923:10;15902:32;;;;;;;;;;;;;;;:111;;;;15688:337;16035:30;16049:4;16055:2;16059:5;16035:13;:30::i;:::-;;16083:4;16076:11;;15528:567:::0;;;;;;:::o;9592:33::-;;;;:::o;9224:83::-;9265:5;9290:9;;;;;;;;;;;9283:16;;9224:83;:::o;16612:348::-;16712:4;16837:10;16785:14;:26;16800:10;16785:26;;;;;;;;;;;;;;;:35;16812:7;16785:35;;;;;;;;;;;;;;;;:63;;;;:::i;:::-;16734:14;:26;16749:10;16734:26;;;;;;;;;;;;;;;:35;16761:7;16734:35;;;;;;;;;;;;;;;:114;;;;16885:7;16864:66;;16873:10;16864:66;;;16894:14;:26;16909:10;16894:26;;;;;;;;;;;;;;;:35;16921:7;16894:35;;;;;;;;;;;;;;;;16864:66;;;;;;:::i;:::-;;;;;;;;16948:4;16941:11;;16612:348;;;;:::o;10098:33::-;;;;;;;;;;;;;:::o;9675:56::-;;;;:::o;10464:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;9368:24::-;;;;:::o;9507:34::-;;;;:::o;17373:578::-;10685:4;10676:6;;:13;;;;;;;;;;;;;;;;;;17420:20:::1;17443:24;17461:4;17443:9;:24::i;:::-;17420:47;;17498:1;17482:12;:17:::0;17478:56:::1;;17516:7;;;17478:56;17565:17;;17550:12;:32;17546:97;;;17614:17;;17599:32;;17546:97;17655:31;17673:12;17655:17;:31::i;:::-;17727:1;17703:21;:25;17699:245;;;17746:12;17772:15;;;;;;;;;;;17764:29;;17819:21;17764:95;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17745:114;;;17882:7;17874:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;17730:214;17699:245;17409:542;10700:1;10721:5:::0;10712:6;;:14;;;;;;;;;;;;;;;;;;17373:578::o;12192:111::-;12254:7;12281:9;:14;12291:3;12281:14;;;;;;;;;;;;;;;;12274:21;;12192:111;;;:::o;2930:103::-;2175:13;:11;:13::i;:::-;2995:30:::1;3022:1;2995:18;:30::i;:::-;2930:103::o:0;12534:175::-;2175:13;:11;:13::i;:::-;12596:14:::1;;;;;;;;;;;12588:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;12665:5;12648:14;;:22;;;;;;;;;;;;;;;;;;12686:15;;;;;;;;;;12534:175::o:0;9432:30::-;;;;;;;;;;;;;:::o;17224:141::-;2175:13;:11;:13::i;:::-;17288::::1;;;;;;;;;;;17287:14;17279:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;17353:4;17337:13;;:20;;;;;;;;;;;;;;;;;;17224:141::o:0;2289:87::-;2335:7;2362:6;;;;;;;;;;;2355:13;;2289:87;:::o;9129:::-;9168:13;9201:7;9194:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9129:87;:::o;16103:501::-;16208:4;16230:16;16249:14;:26;16264:10;16249:26;;;;;;;;;;;;;;;:35;16276:7;16249:35;;;;;;;;;;;;;;;;16230:54;;16318:8;16299:15;:27;16295:198;;16381:1;16343:14;:26;16358:10;16343:26;;;;;;;;;;;;;;;:35;16370:7;16343:35;;;;;;;;;;;;;;;:39;;;;16295:198;;;16465:15;16453:8;:28;;;;:::i;:::-;16415:14;:26;16430:10;16415:26;;;;;;;;;;;;;;;:35;16442:7;16415:35;;;;;;;;;;;;;;;:66;;;;16295:198;16529:7;16508:66;;16517:10;16508:66;;;16538:14;:26;16553:10;16538:26;;;;;;;;;;;;;;;:35;16565:7;16538:35;;;;;;;;;;;;;;;;16508:66;;;;;;:::i;:::-;;;;;;;;16592:4;16585:11;;;16103:501;;;;:::o;10070:19::-;;;;;;;;;;;;;:::o;12311:215::-;12438:4;12416:2;10592:3;10578:18;;:2;:18;;;10570:27;;;;;;12460:36:::1;12474:10;12486:2;12490:5;12460:13;:36::i;:::-;;12514:4;12507:11;;12311:215:::0;;;;;:::o;9738:59::-;;;;:::o;11993:191::-;12113:7;12145:14;:22;12160:6;12145:22;;;;;;;;;;;;;;;:31;12168:7;12145:31;;;;;;;;;;;;;;;;12138:38;;11993:191;;;;:::o;9548:35::-;;;;:::o;9632:34::-;;;;:::o;3188:238::-;2175:13;:11;:13::i;:::-;3311:1:::1;3291:22;;:8;:22;;::::0;3269:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3390:28;3409:8;3390:18;:28::i;:::-;3188:238:::0;:::o;10035:28::-;;;;;;;;;;;;;:::o;9399:24::-;;;;:::o;2454:132::-;2529:12;:10;:12::i;:::-;2518:23;;:7;:5;:7::i;:::-;:23;;;2510:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2454:132::o;12880:2640::-;13006:4;13042:6;;;;;;;;;;;13041:7;:51;;;;;13066:18;:26;13085:6;13066:26;;;;;;;;;;;;;;;;;;;;;;;;;13065:27;13041:51;:98;;;;;13110:18;:29;13129:9;13110:29;;;;;;;;;;;;;;;;;;;;;;;;;13109:30;13041:98;13023:2332;;;13174:13;;;;;;;;;;;13166:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;13227:14;;;;;;;;;;;13223:416;;;13276:4;;;;;;;;;;;13266:14;;:6;:14;;;:35;;;;13297:4;;;;;;;;;;;13284:17;;:9;:17;;;13266:35;13262:131;;;13344:9;;13334:6;:19;;13326:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13262:131;13428:4;;;;;;;;;;;13415:17;;:9;:17;;;13411:213;;13524:9;;13514:6;13491:20;13501:9;13491;:20::i;:::-;:29;;;;:::i;:::-;:42;;13457:147;;;;;;;;;;;;:::i;:::-;;;;;;;;;13411:213;13223:416;13672:4;;;;;;;;;;;13659:17;;:9;:17;;;13655:161;;13729:17;;13701:24;13719:4;13701:9;:24::i;:::-;:45;13697:104;;13771:10;:8;:10::i;:::-;13697:104;13655:161;13846:4;;;;;;;;;;;13836:14;;:6;:14;;;13832:1512;;13884:1;13871:9;;:14;;;;;;;:::i;:::-;;;;;;;;13906:17;14010:3;13970:12;;13958:9;;:24;:47;;13994:11;;13958:47;;;13985:6;;13958:47;13927:6;:79;;;;:::i;:::-;13926:87;;;;:::i;:::-;13906:107;;14034:24;14114:6;;14074:14;;14062:9;:26;;;;:::i;:::-;14061:60;;;;:::i;:::-;14034:87;;14140:25;14180:16;14168:9;:28;;;;:::i;:::-;14140:56;;14238:9;14217;:17;14227:6;14217:17;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;14294:17;14266:9;:24;14284:4;14266:24;;;;;;;;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;14359:16;14330:9;:25;14340:14;;;;;;;;;;;14330:25;;;;;;;;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;14426:4;14401:50;;14410:6;14401:50;;;14433:17;14401:50;;;;;;:::i;:::-;;;;;;;;14492:14;;;;;;;;;;;14475:50;;14484:6;14475:50;;;14508:16;14475:50;;;;;;:::i;:::-;;;;;;;;14556:9;14546:19;;;;;:::i;:::-;;;13852:729;;;13832:1512;;;14604:4;;;;;;;;;;;14591:17;;:9;:17;;;14587:757;;14643:1;14629:10;;:15;;;;;;;:::i;:::-;;;;;;;;14665:17;14771:3;14730:12;;14717:10;;:25;:49;;14755:11;;14717:49;;;14745:7;;14717:49;14686:6;:81;;;;:::i;:::-;14685:89;;;;:::i;:::-;14665:109;;14795:24;14876:7;;14835:15;;14823:9;:27;;;;:::i;:::-;14822:62;;;;:::i;:::-;14795:89;;14903:25;14943:16;14931:9;:28;;;;:::i;:::-;14903:56;;15001:9;14980;:17;14990:6;14980:17;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15057:17;15029:9;:24;15047:4;15029:24;;;;;;;;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;15122:16;15093:9;:25;15103:14;;;;;;;;;;;15093:25;;;;;;;;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;15189:4;15164:50;;15173:6;15164:50;;;15196:17;15164:50;;;;;;:::i;:::-;;;;;;;;15255:14;;;;;;;;;;;15238:50;;15247:6;15238:50;;;15271:16;15238:50;;;;;;:::i;:::-;;;;;;;;15319:9;15309:19;;;;;:::i;:::-;;;14610:734;;;14587:757;13832:1512;13023:2332;15388:6;15367:9;:17;15377:6;15367:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;15429:6;15405:9;:20;15415:9;15405:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15470:9;15453:35;;15462:6;15453:35;;;15481:6;15453:35;;;;;;:::i;:::-;;;;;;;;15508:4;15501:11;;12880:2640;;;;;:::o;17959:395::-;18027:21;18065:1;18051:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18027:40;;18096:4;18078;18083:1;18078:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18122:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18112:4;18117:1;18112:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18148:6;;;;;;;;;;;:57;;;18220:11;18246:1;18262:4;18289:15;;;;;;;;;;;18320;18148:198;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18016:338;17959:395;:::o;3586:191::-;3660:16;3679:6;;;;;;;;;;;3660:25;;3705:8;3696:6;;:17;;;;;;;;;;;;;;;;;;3760:8;3729:40;;3750:8;3729:40;;;;;;;;;;;;3649:128;3586:191;:::o;762:98::-;815:7;842:10;835:17;;762:98;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:246::-;954:1;964:113;978:6;975:1;972:13;964:113;;;1063:1;1058:3;1054:11;1048:18;1044:1;1039:3;1035:11;1028:39;1000:2;997:1;993:10;988:15;;964:113;;;1111:1;1102:6;1097:3;1093:16;1086:27;935:184;873:246;;;:::o;1125:102::-;1166:6;1217:2;1213:7;1208:2;1201:5;1197:14;1193:28;1183:38;;1125:102;;;:::o;1233:377::-;1321:3;1349:39;1382:5;1349:39;:::i;:::-;1404:71;1468:6;1463:3;1404:71;:::i;:::-;1397:78;;1484:65;1542:6;1537:3;1530:4;1523:5;1519:16;1484:65;:::i;:::-;1574:29;1596:6;1574:29;:::i;:::-;1569:3;1565:39;1558:46;;1325:285;1233:377;;;;:::o;1616:313::-;1729:4;1767:2;1756:9;1752:18;1744:26;;1816:9;1810:4;1806:20;1802:1;1791:9;1787:17;1780:47;1844:78;1917:4;1908:6;1844:78;:::i;:::-;1836:86;;1616:313;;;;:::o;2016:117::-;2125:1;2122;2115:12;2262:122;2335:24;2353:5;2335:24;:::i;:::-;2328:5;2325:35;2315:63;;2374:1;2371;2364:12;2315:63;2262:122;:::o;2390:139::-;2436:5;2474:6;2461:20;2452:29;;2490:33;2517:5;2490:33;:::i;:::-;2390:139;;;;:::o;2535:77::-;2572:7;2601:5;2590:16;;2535:77;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:468::-;4124:6;4132;4181:2;4169:9;4160:7;4156:23;4152:32;4149:119;;;4187:79;;:::i;:::-;4149:119;4307:1;4332:53;4377:7;4368:6;4357:9;4353:22;4332:53;:::i;:::-;4322:63;;4278:117;4434:2;4460:50;4502:7;4493:6;4482:9;4478:22;4460:50;:::i;:::-;4450:60;;4405:115;4059:468;;;;;:::o;4533:118::-;4620:24;4638:5;4620:24;:::i;:::-;4615:3;4608:37;4533:118;;:::o;4657:222::-;4750:4;4788:2;4777:9;4773:18;4765:26;;4801:71;4869:1;4858:9;4854:17;4845:6;4801:71;:::i;:::-;4657:222;;;;:::o;4885:619::-;4962:6;4970;4978;5027:2;5015:9;5006:7;5002:23;4998:32;4995:119;;;5033:79;;:::i;:::-;4995:119;5153:1;5178:53;5223:7;5214:6;5203:9;5199:22;5178:53;:::i;:::-;5168:63;;5124:117;5280:2;5306:53;5351:7;5342:6;5331:9;5327:22;5306:53;:::i;:::-;5296:63;;5251:118;5408:2;5434:53;5479:7;5470:6;5459:9;5455:22;5434:53;:::i;:::-;5424:63;;5379:118;4885:619;;;;;:::o;5510:86::-;5545:7;5585:4;5578:5;5574:16;5563:27;;5510:86;;;:::o;5602:112::-;5685:22;5701:5;5685:22;:::i;:::-;5680:3;5673:35;5602:112;;:::o;5720:214::-;5809:4;5847:2;5836:9;5832:18;5824:26;;5860:67;5924:1;5913:9;5909:17;5900:6;5860:67;:::i;:::-;5720:214;;;;:::o;5940:329::-;5999:6;6048:2;6036:9;6027:7;6023:23;6019:32;6016:119;;;6054:79;;:::i;:::-;6016:119;6174:1;6199:53;6244:7;6235:6;6224:9;6220:22;6199:53;:::i;:::-;6189:63;;6145:117;5940:329;;;;:::o;6275:474::-;6343:6;6351;6400:2;6388:9;6379:7;6375:23;6371:32;6368:119;;;6406:79;;:::i;:::-;6368:119;6526:1;6551:53;6596:7;6587:6;6576:9;6572:22;6551:53;:::i;:::-;6541:63;;6497:117;6653:2;6679:53;6724:7;6715:6;6704:9;6700:22;6679:53;:::i;:::-;6669:63;;6624:118;6275:474;;;;;:::o;6755:60::-;6783:3;6804:5;6797:12;;6755:60;;;:::o;6821:142::-;6871:9;6904:53;6922:34;6931:24;6949:5;6931:24;:::i;:::-;6922:34;:::i;:::-;6904:53;:::i;:::-;6891:66;;6821:142;;;:::o;6969:126::-;7019:9;7052:37;7083:5;7052:37;:::i;:::-;7039:50;;6969:126;;;:::o;7101:148::-;7173:9;7206:37;7237:5;7206:37;:::i;:::-;7193:50;;7101:148;;;:::o;7255:175::-;7364:59;7417:5;7364:59;:::i;:::-;7359:3;7352:72;7255:175;;:::o;7436:266::-;7551:4;7589:2;7578:9;7574:18;7566:26;;7602:93;7692:1;7681:9;7677:17;7668:6;7602:93;:::i;:::-;7436:266;;;;:::o;7708:180::-;7756:77;7753:1;7746:88;7853:4;7850:1;7843:15;7877:4;7874:1;7867:15;7894:320;7938:6;7975:1;7969:4;7965:12;7955:22;;8022:1;8016:4;8012:12;8043:18;8033:81;;8099:4;8091:6;8087:17;8077:27;;8033:81;8161:2;8153:6;8150:14;8130:18;8127:38;8124:84;;8180:18;;:::i;:::-;8124:84;7945:269;7894:320;;;:::o;8220:172::-;8360:24;8356:1;8348:6;8344:14;8337:48;8220:172;:::o;8398:366::-;8540:3;8561:67;8625:2;8620:3;8561:67;:::i;:::-;8554:74;;8637:93;8726:3;8637:93;:::i;:::-;8755:2;8750:3;8746:12;8739:19;;8398:366;;;:::o;8770:419::-;8936:4;8974:2;8963:9;8959:18;8951:26;;9023:9;9017:4;9013:20;9009:1;8998:9;8994:17;8987:47;9051:131;9177:4;9051:131;:::i;:::-;9043:139;;8770:419;;;:::o;9195:180::-;9243:77;9240:1;9233:88;9340:4;9337:1;9330:15;9364:4;9361:1;9354:15;9381:194;9421:4;9441:20;9459:1;9441:20;:::i;:::-;9436:25;;9475:20;9493:1;9475:20;:::i;:::-;9470:25;;9519:1;9516;9512:9;9504:17;;9543:1;9537:4;9534:11;9531:37;;;9548:18;;:::i;:::-;9531:37;9381:194;;;;:::o;9581:191::-;9621:3;9640:20;9658:1;9640:20;:::i;:::-;9635:25;;9674:20;9692:1;9674:20;:::i;:::-;9669:25;;9717:1;9714;9710:9;9703:16;;9738:3;9735:1;9732:10;9729:36;;;9745:18;;:::i;:::-;9729:36;9581:191;;;;:::o;9778:147::-;9879:11;9916:3;9901:18;;9778:147;;;;:::o;9931:114::-;;:::o;10051:398::-;10210:3;10231:83;10312:1;10307:3;10231:83;:::i;:::-;10224:90;;10323:93;10412:3;10323:93;:::i;:::-;10441:1;10436:3;10432:11;10425:18;;10051:398;;;:::o;10455:379::-;10639:3;10661:147;10804:3;10661:147;:::i;:::-;10654:154;;10825:3;10818:10;;10455:379;;;:::o;10840:225::-;10980:34;10976:1;10968:6;10964:14;10957:58;11049:8;11044:2;11036:6;11032:15;11025:33;10840:225;:::o;11071:366::-;11213:3;11234:67;11298:2;11293:3;11234:67;:::i;:::-;11227:74;;11310:93;11399:3;11310:93;:::i;:::-;11428:2;11423:3;11419:12;11412:19;;11071:366;;;:::o;11443:419::-;11609:4;11647:2;11636:9;11632:18;11624:26;;11696:9;11690:4;11686:20;11682:1;11671:9;11667:17;11660:47;11724:131;11850:4;11724:131;:::i;:::-;11716:139;;11443:419;;;:::o;11868:172::-;12008:24;12004:1;11996:6;11992:14;11985:48;11868:172;:::o;12046:366::-;12188:3;12209:67;12273:2;12268:3;12209:67;:::i;:::-;12202:74;;12285:93;12374:3;12285:93;:::i;:::-;12403:2;12398:3;12394:12;12387:19;;12046:366;;;:::o;12418:419::-;12584:4;12622:2;12611:9;12607:18;12599:26;;12671:9;12665:4;12661:20;12657:1;12646:9;12642:17;12635:47;12699:131;12825:4;12699:131;:::i;:::-;12691:139;;12418:419;;;:::o;12843:170::-;12983:22;12979:1;12971:6;12967:14;12960:46;12843:170;:::o;13019:366::-;13161:3;13182:67;13246:2;13241:3;13182:67;:::i;:::-;13175:74;;13258:93;13347:3;13258:93;:::i;:::-;13376:2;13371:3;13367:12;13360:19;;13019:366;;;:::o;13391:419::-;13557:4;13595:2;13584:9;13580:18;13572:26;;13644:9;13638:4;13634:20;13630:1;13619:9;13615:17;13608:47;13672:131;13798:4;13672:131;:::i;:::-;13664:139;;13391:419;;;:::o;13816:225::-;13956:34;13952:1;13944:6;13940:14;13933:58;14025:8;14020:2;14012:6;14008:15;14001:33;13816:225;:::o;14047:366::-;14189:3;14210:67;14274:2;14269:3;14210:67;:::i;:::-;14203:74;;14286:93;14375:3;14286:93;:::i;:::-;14404:2;14399:3;14395:12;14388:19;;14047:366;;;:::o;14419:419::-;14585:4;14623:2;14612:9;14608:18;14600:26;;14672:9;14666:4;14662:20;14658:1;14647:9;14643:17;14636:47;14700:131;14826:4;14700:131;:::i;:::-;14692:139;;14419:419;;;:::o;14844:182::-;14984:34;14980:1;14972:6;14968:14;14961:58;14844:182;:::o;15032:366::-;15174:3;15195:67;15259:2;15254:3;15195:67;:::i;:::-;15188:74;;15271:93;15360:3;15271:93;:::i;:::-;15389:2;15384:3;15380:12;15373:19;;15032:366;;;:::o;15404:419::-;15570:4;15608:2;15597:9;15593:18;15585:26;;15657:9;15651:4;15647:20;15643:1;15632:9;15628:17;15621:47;15685:131;15811:4;15685:131;:::i;:::-;15677:139;;15404:419;;;:::o;15829:166::-;15969:18;15965:1;15957:6;15953:14;15946:42;15829:166;:::o;16001:366::-;16143:3;16164:67;16228:2;16223:3;16164:67;:::i;:::-;16157:74;;16240:93;16329:3;16240:93;:::i;:::-;16358:2;16353:3;16349:12;16342:19;;16001:366;;;:::o;16373:419::-;16539:4;16577:2;16566:9;16562:18;16554:26;;16626:9;16620:4;16616:20;16612:1;16601:9;16597:17;16590:47;16654:131;16780:4;16654:131;:::i;:::-;16646:139;;16373:419;;;:::o;16798:165::-;16938:17;16934:1;16926:6;16922:14;16915:41;16798:165;:::o;16969:366::-;17111:3;17132:67;17196:2;17191:3;17132:67;:::i;:::-;17125:74;;17208:93;17297:3;17208:93;:::i;:::-;17326:2;17321:3;17317:12;17310:19;;16969:366;;;:::o;17341:419::-;17507:4;17545:2;17534:9;17530:18;17522:26;;17594:9;17588:4;17584:20;17580:1;17569:9;17565:17;17558:47;17622:131;17748:4;17622:131;:::i;:::-;17614:139;;17341:419;;;:::o;17766:169::-;17906:21;17902:1;17894:6;17890:14;17883:45;17766:169;:::o;17941:366::-;18083:3;18104:67;18168:2;18163:3;18104:67;:::i;:::-;18097:74;;18180:93;18269:3;18180:93;:::i;:::-;18298:2;18293:3;18289:12;18282:19;;17941:366;;;:::o;18313:419::-;18479:4;18517:2;18506:9;18502:18;18494:26;;18566:9;18560:4;18556:20;18552:1;18541:9;18537:17;18530:47;18594:131;18720:4;18594:131;:::i;:::-;18586:139;;18313:419;;;:::o;18738:410::-;18778:7;18801:20;18819:1;18801:20;:::i;:::-;18796:25;;18835:20;18853:1;18835:20;:::i;:::-;18830:25;;18890:1;18887;18883:9;18912:30;18930:11;18912:30;:::i;:::-;18901:41;;19091:1;19082:7;19078:15;19075:1;19072:22;19052:1;19045:9;19025:83;19002:139;;19121:18;;:::i;:::-;19002:139;18786:362;18738:410;;;;:::o;19154:180::-;19202:77;19199:1;19192:88;19299:4;19296:1;19289:15;19323:4;19320:1;19313:15;19340:185;19380:1;19397:20;19415:1;19397:20;:::i;:::-;19392:25;;19431:20;19449:1;19431:20;:::i;:::-;19426:25;;19470:1;19460:35;;19475:18;;:::i;:::-;19460:35;19517:1;19514;19510:9;19505:14;;19340:185;;;;:::o;19531:180::-;19579:77;19576:1;19569:88;19676:4;19673:1;19666:15;19700:4;19697:1;19690:15;19717:180;19765:77;19762:1;19755:88;19862:4;19859:1;19852:15;19886:4;19883:1;19876:15;19903:143;19960:5;19991:6;19985:13;19976:22;;20007:33;20034:5;20007:33;:::i;:::-;19903:143;;;;:::o;20052:351::-;20122:6;20171:2;20159:9;20150:7;20146:23;20142:32;20139:119;;;20177:79;;:::i;:::-;20139:119;20297:1;20322:64;20378:7;20369:6;20358:9;20354:22;20322:64;:::i;:::-;20312:74;;20268:128;20052:351;;;;:::o;20409:85::-;20454:7;20483:5;20472:16;;20409:85;;;:::o;20500:158::-;20558:9;20591:61;20609:42;20618:32;20644:5;20618:32;:::i;:::-;20609:42;:::i;:::-;20591:61;:::i;:::-;20578:74;;20500:158;;;:::o;20664:147::-;20759:45;20798:5;20759:45;:::i;:::-;20754:3;20747:58;20664:147;;:::o;20817:114::-;20884:6;20918:5;20912:12;20902:22;;20817:114;;;:::o;20937:184::-;21036:11;21070:6;21065:3;21058:19;21110:4;21105:3;21101:14;21086:29;;20937:184;;;;:::o;21127:132::-;21194:4;21217:3;21209:11;;21247:4;21242:3;21238:14;21230:22;;21127:132;;;:::o;21265:108::-;21342:24;21360:5;21342:24;:::i;:::-;21337:3;21330:37;21265:108;;:::o;21379:179::-;21448:10;21469:46;21511:3;21503:6;21469:46;:::i;:::-;21547:4;21542:3;21538:14;21524:28;;21379:179;;;;:::o;21564:113::-;21634:4;21666;21661:3;21657:14;21649:22;;21564:113;;;:::o;21713:732::-;21832:3;21861:54;21909:5;21861:54;:::i;:::-;21931:86;22010:6;22005:3;21931:86;:::i;:::-;21924:93;;22041:56;22091:5;22041:56;:::i;:::-;22120:7;22151:1;22136:284;22161:6;22158:1;22155:13;22136:284;;;22237:6;22231:13;22264:63;22323:3;22308:13;22264:63;:::i;:::-;22257:70;;22350:60;22403:6;22350:60;:::i;:::-;22340:70;;22196:224;22183:1;22180;22176:9;22171:14;;22136:284;;;22140:14;22436:3;22429:10;;21837:608;;;21713:732;;;;:::o;22451:134::-;22509:9;22542:37;22573:5;22542:37;:::i;:::-;22529:50;;22451:134;;;:::o;22591:147::-;22686:45;22725:5;22686:45;:::i;:::-;22681:3;22674:58;22591:147;;:::o;22744:847::-;23015:4;23053:3;23042:9;23038:19;23030:27;;23067:71;23135:1;23124:9;23120:17;23111:6;23067:71;:::i;:::-;23148:80;23224:2;23213:9;23209:18;23200:6;23148:80;:::i;:::-;23275:9;23269:4;23265:20;23260:2;23249:9;23245:18;23238:48;23303:108;23406:4;23397:6;23303:108;:::i;:::-;23295:116;;23421:80;23497:2;23486:9;23482:18;23473:6;23421:80;:::i;:::-;23511:73;23579:3;23568:9;23564:19;23555:6;23511:73;:::i;:::-;22744:847;;;;;;;;:::o

Swarm Source

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