ETH Price: $3,621.32 (-2.40%)

Token

ERC-20: ComputeCredits (CPC)
 

Overview

Max Total Supply

1,000,000,000 CPC

Holders

106

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
764,213.253236537820068261 CPC

Value
$0.00
0x4d052c2f196e2157e89ae22579d1b39f8f077d6c
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:
ComputeCredits

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-22
*/

/*
Compute Credits ($CPC) is a decentralized marketplace revolutionizing the way you access high-performance compute resources.

Website: https://computecredits.io/
Twitter(X): hhttps://x.com/computecredits?s=21
PORTAL: https://t.me/computecredits

*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;

interface IERC20 {

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

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

    function totalSupply() external view returns (uint256);

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

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

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

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

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);
}

interface IERC20Metadata is IERC20 {

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

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

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

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

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

interface IERC20Errors {

    error ERC20InsufficientBalance(
        address sender,
        uint256 balance,
        uint256 needed
    );

    error ERC20InvalidSender(address sender);

    error ERC20InvalidReceiver(address receiver);

    error ERC20InsufficientAllowance(
        address spender,
        uint256 allowance,
        uint256 needed
    );

    error ERC20InvalidApprover(address approver);

    error ERC20InvalidSpender(address spender);
}
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

    function transfer(address to, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }

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

    function approve(address spender, uint256 value)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 value
    ) internal {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }

    function _update(
        address from,
        address to,
        uint256 value
    ) internal virtual {
        if (from == address(0)) {

            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {

                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {

                _totalSupply -= value;
            }
        } else {
            unchecked {

                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }

    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    function _approve(
        address owner,
        address spender,
        uint256 value
    ) internal {
        _approve(owner, spender, value, true);
    }

    function _approve(
        address owner,
        address spender,
        uint256 value,
        bool emitEvent
    ) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 value
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(
                    spender,
                    currentAllowance,
                    value
                );
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }
}

abstract contract Ownable is Context {
    address private _owner;

    error OwnableUnauthorizedAccount(address account);

    error OwnableInvalidOwner(address owner);

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

    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

    function WETH() external pure returns (address);

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

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

contract ComputeCredits is Ownable, ERC20 {
    IUniswapV2Router public immutable uniswapV2Router;

    address private constant ZERO_ADDRESS = address(0);
    address private constant DEAD_ADDRESS = address(0xdEaD);

    address public uniswapV2Pair;

    address public operationsWallet;
    address public marketingWallet;
    address public adminWallet;

    bool public isLimitsEnabled;
    bool public isCooldownEnabled;
    bool public isTaxEnabled;
    bool private inSwapBack;
    bool public isLaunched;
    bool public CanAddBots;

    uint256 public launchBlock;
    uint256 public launchTime;

    uint256 private lastSwapBackExecutionBlock;

    uint256 public maxBuy;
    uint256 public maxSell;
    uint256 public maxWallet;

    uint256 public swapTokensAtAmount;
    uint256 public buyFee;
    uint256 public sellFee;
    uint256 public transferFee;

    mapping(address => bool) public isBot;
    mapping(address => bool) public isExcludedFromFees;
    mapping(address => bool) public isExcludedFromLimits;
    mapping(address => bool) public automatedMarketMakerPairs;
    mapping(address => uint256) private _holderLastTransferTimestamp;

    event Launch();
    event SetOperationsWallet(address newWallet, address oldWallet);
    event SetmarketingWallet(address newWallet, address oldWallet);
    event SetLimitsEnabled(bool status);
    event SetCooldownEnabled(bool status);
    event SetTaxesEnabled(bool status);
    event SetMaxBuy(uint256 amount);
    event SetMaxSell(uint256 amount);
    event SetMaxWallet(uint256 amount);
    event SetSwapTokensAtAmount(uint256 newValue, uint256 oldValue);
    event SetBuyFees(uint256 newValue, uint256 oldValue);
    event SetSellFees(uint256 newValue, uint256 oldValue);
    event SetTransferFees(uint256 newValue, uint256 oldValue);
    event ExcludeFromFees(address account, bool isExcluded);
    event ExcludeFromLimits(address account, bool isExcluded);
    event SetBots(address account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address pair, bool value);
    event WithdrawStuckTokens(address token, uint256 amount);

    error AlreadyLaunched();
    error AddressZero();
    error AmountTooLow();
    error AmountTooHigh();
    error FeeTooHigh();
    error AMMAlreadySet();
    error NoNativeTokens();
    error NoTokens();
    error FailedToWithdrawNativeTokens();
    error BotDetected();
    error TransferDelay();
    error MaxBuyAmountExceed();
    error MaxSellAmountExceed();
    error MaxWalletAmountExceed();
    error NotLaunched();

    modifier lockSwapBack() {
        inSwapBack = true;
        _;
        inSwapBack = false;
    }

    constructor() Ownable(msg.sender) ERC20("ComputeCredits", "CPC") {
        address sender = msg.sender;
        _mint(sender, 1_000_000_000 ether);
        uint256 totalSupply = totalSupply();

        operationsWallet = 0xd644afE199c211287137B5E7311A5B085865F524; //10%
        marketingWallet = 0x1F1944dD93191415d16b20BE271d105af8f09fE4; //38.5%
        adminWallet = 0x78F7D1498BF8590151AE4429A1b6229BF582e9C9; //51.5%

        maxBuy = (totalSupply * 14) / 1000; //1.4%
        maxSell = (totalSupply * 14) / 1000; //1.4%
        maxWallet = (totalSupply * 14) / 1000; //1.4%
        swapTokensAtAmount = (totalSupply * 5) / 1000; //0.5%

        isLimitsEnabled = true;
        isCooldownEnabled = true;
        isTaxEnabled = true;
        CanAddBots = true;

        buyFee = 30;
        sellFee = 59;
        transferFee = 59;

        uniswapV2Router = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _excludeFromFees(address(this), true);
        _excludeFromFees(address(0xdead), true);
        _excludeFromFees(sender, true);
        _excludeFromFees(operationsWallet, true);
        _excludeFromFees(marketingWallet, true);
        _excludeFromLimits(address(this), true);
        _excludeFromLimits(address(0xdead), true);
        _excludeFromLimits(sender, true);
        _excludeFromLimits(operationsWallet, true);
        _excludeFromLimits(marketingWallet, true);
    }

    receive() external payable {}

    fallback() external payable {}

    function _transferOwnership(address newOwner) internal override {
        address oldOwner = owner();
        if (oldOwner != address(0)) {
            _excludeFromFees(oldOwner, false);
            _excludeFromLimits(oldOwner, false);
        }
        _excludeFromFees(newOwner, true);
        _excludeFromLimits(newOwner, true);
        super._transferOwnership(newOwner);
    }

    function EnableTrading() external onlyOwner {
        require(!isLaunched, AlreadyLaunched());

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );

        _setAutomatedMarketMakerPair(uniswapV2Pair, true);
        _approve(address(this), address(uniswapV2Router), type(uint256).max);
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        isLaunched = true;
        launchBlock = block.number;
        launchTime = block.timestamp;
        emit Launch();
    }

    function EditOperationsWallet(address _operationsWallet) external onlyOwner {
        require(_operationsWallet != address(0), AddressZero());
        address oldWallet = operationsWallet;
        operationsWallet = _operationsWallet;
        emit SetOperationsWallet(operationsWallet, oldWallet);
    }

    function EditmarketingWallet(address _marketingWallet)
        external
        onlyOwner
    {
        require(_marketingWallet != address(0), AddressZero());
        address oldWallet = marketingWallet;
        marketingWallet = _marketingWallet;
        emit SetmarketingWallet(marketingWallet, oldWallet);
    }

    function RemoveAllLimits() external onlyOwner {
        isLimitsEnabled = false;
        emit SetLimitsEnabled(false);
    }

    function RemoveCooldownLimit() external onlyOwner {
        isCooldownEnabled = false;
        emit SetCooldownEnabled(false);
    }
      
    function ToggleTax(bool value) external onlyOwner {
        isTaxEnabled = value;
        emit SetTaxesEnabled(value);
    }

    function setSwapTokensAtAmount(uint256 amount) external onlyOwner {
        uint256 _totalSupply = totalSupply();
        require(amount >= (_totalSupply * 1) / 1000, AmountTooLow());
        require(amount <= (_totalSupply * 3) / 100, AmountTooHigh());
        uint256 oldValue = swapTokensAtAmount;
        swapTokensAtAmount = amount;
        emit SetSwapTokensAtAmount(amount, oldValue);
    }

    function ReduceBuyFees(uint256 _buyFee) external onlyOwner {
        require(_buyFee <= buyFee, FeeTooHigh());
        uint256 oldValue = buyFee;
        buyFee = _buyFee;
        emit SetBuyFees(_buyFee, oldValue);
    }

    function ReduceSellFees(uint256 _sellFee) external onlyOwner {
        require(_sellFee <= sellFee, FeeTooHigh());
        uint256 oldValue = sellFee;
        sellFee = _sellFee;
        emit SetSellFees(_sellFee, oldValue);
    }

    function ReduceTransferFees(uint256 _transferFee) external onlyOwner {
        require(_transferFee <= transferFee, FeeTooHigh());
        uint256 oldValue = transferFee;
        transferFee = _transferFee;
        emit SetTransferFees(_transferFee, oldValue);
    }

    function excludeFromFees(address[] calldata accounts, bool value)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < accounts.length; i++) {
            _excludeFromFees(accounts[i], value);
        }
    }

    function excludeFromLimits(address[] calldata accounts, bool value)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < accounts.length; i++) {
            _excludeFromLimits(accounts[i], value);
        }
    }

    function DestroyAddBots() external onlyOwner {
        require(CanAddBots, "Already Disabled");
        CanAddBots = false;
    }

    function setBots(address[] calldata accounts, bool value)
        external
        onlyOwner
    {
        require(CanAddBots, "Can't Add more bots now");
        for (uint256 i = 0; i < accounts.length; i++) {
            if (
                (!automatedMarketMakerPairs[accounts[i]]) &&
                (accounts[i] != address(uniswapV2Router)) &&
                (accounts[i] != address(this)) &&
                (accounts[i] != ZERO_ADDRESS) &&
                (!isExcludedFromFees[accounts[i]] &&
                    !isExcludedFromLimits[accounts[i]])
            ) _setBots(accounts[i], value);
        }
    }
    function RemoveBotWallet(address _wallet) external onlyOwner {
        _setBots(_wallet, false);
    }

    function withdrawStuckTokens(address _token) external onlyOwner {
        address sender = msg.sender;
        uint256 amount;
        if (_token == ZERO_ADDRESS) {
            bool success;
            amount = address(this).balance;
            require(amount > 0, NoNativeTokens());
            (success, ) = address(sender).call{value: amount}("");
            require(success, FailedToWithdrawNativeTokens());
        } else {
            amount = IERC20(_token).balanceOf(address(this));
            require(amount > 0, NoTokens());
            IERC20(_token).transfer(msg.sender, amount);
        }
        emit WithdrawStuckTokens(_token, amount);
    }

    function _update(
        address from,
        address to,
        uint256 amount
    ) internal virtual override {
        address sender = msg.sender;
        address origin = tx.origin;

        require(!isBot[from], BotDetected());
        require(sender == from || !isBot[sender], BotDetected());
        require(
            origin == from || origin == sender || !isBot[origin],
            BotDetected()
        );

        require(
            isLaunched ||
                isExcludedFromLimits[from] ||
                isExcludedFromLimits[to],
            NotLaunched()
        );

        bool limits = isLimitsEnabled &&
            !inSwapBack &&
            !(isExcludedFromLimits[from] || isExcludedFromLimits[to]);
        if (limits) {
            if (
                from != owner() &&
                to != owner() &&
                to != ZERO_ADDRESS &&
                to != DEAD_ADDRESS
            ) {
                if (isCooldownEnabled) {
                    if (to != address(uniswapV2Router) && to != uniswapV2Pair) {
                        require(
                            _holderLastTransferTimestamp[origin] <
                                block.number - 3 &&
                                _holderLastTransferTimestamp[to] <
                                block.number - 3,
                            TransferDelay()
                        );
                        _holderLastTransferTimestamp[origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }

                if (
                    automatedMarketMakerPairs[from] && !isExcludedFromLimits[to]
                ) {
                    require(amount <= maxBuy, MaxBuyAmountExceed());
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        MaxWalletAmountExceed()
                    );
                } else if (
                    automatedMarketMakerPairs[to] && !isExcludedFromLimits[from]
                ) {
                    require(amount <= maxSell, MaxSellAmountExceed());
                } else if (!isExcludedFromLimits[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        MaxWalletAmountExceed()
                    );
                }
            }
        }

        bool takeFee = isTaxEnabled &&
            !inSwapBack &&
            !(isExcludedFromFees[from] || isExcludedFromFees[to]);

        if (takeFee) {
            uint256 fees = 0;
            if (automatedMarketMakerPairs[to] && sellFee > 0) {
                fees = (amount * sellFee) / 100;
            } else if (automatedMarketMakerPairs[from] && buyFee > 0) {
                fees = (amount * buyFee) / 100;
            } else if (
                !automatedMarketMakerPairs[to] &&
                !automatedMarketMakerPairs[from] &&
                transferFee > 0
            ) {
                fees = (amount * transferFee) / 100;
            }

            if (fees > 0) {
                amount -= fees;
                super._update(from, address(this), fees);
            }
        }

        uint256 balance = balanceOf(address(this));
        bool shouldSwap = balance >= swapTokensAtAmount;
        if (takeFee && !automatedMarketMakerPairs[from] && shouldSwap) {
            if (block.number > lastSwapBackExecutionBlock) {
                _swapBack(balance);
                lastSwapBackExecutionBlock = block.number;
            }
        }

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

    function _swapBack(uint256 balance) internal virtual lockSwapBack {
        bool success;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uint256 maxSwapAmount = swapTokensAtAmount * 20;

        if (balance > maxSwapAmount) {
            balance = maxSwapAmount;
        }

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            balance,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethBalance = address(this).balance;

        uint256 ethForOperations = (ethBalance * 100) / 1000;
        uint256 ethForAdmin = (ethBalance * 515) / 1000;
        uint256 ethForMarketing = (ethBalance * 385) / 1000;

        (success, ) = address(operationsWallet).call{value: ethForOperations}(
            ""
        );

        (success, ) = address(adminWallet).call{value: ethForAdmin}(
            ""
        );

        (success, ) = address(marketingWallet).call{value: ethForMarketing}(
            ""
        );
    }

    function _excludeFromFees(address account, bool value) internal virtual {
        isExcludedFromFees[account] = value;
        emit ExcludeFromFees(account, value);
    }

    function _excludeFromLimits(address account, bool value) internal virtual {
        isExcludedFromLimits[account] = value;
        emit ExcludeFromLimits(account, value);
    }

    function _setBots(address account, bool value) internal virtual {
        isBot[account] = value;
        emit SetBots(account, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value)
        internal
        virtual
    {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AMMAlreadySet","type":"error"},{"inputs":[],"name":"AddressZero","type":"error"},{"inputs":[],"name":"AlreadyLaunched","type":"error"},{"inputs":[],"name":"AmountTooHigh","type":"error"},{"inputs":[],"name":"AmountTooLow","type":"error"},{"inputs":[],"name":"BotDetected","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"FailedToWithdrawNativeTokens","type":"error"},{"inputs":[],"name":"FeeTooHigh","type":"error"},{"inputs":[],"name":"MaxBuyAmountExceed","type":"error"},{"inputs":[],"name":"MaxSellAmountExceed","type":"error"},{"inputs":[],"name":"MaxWalletAmountExceed","type":"error"},{"inputs":[],"name":"NoNativeTokens","type":"error"},{"inputs":[],"name":"NoTokens","type":"error"},{"inputs":[],"name":"NotLaunched","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"TransferDelay","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromLimits","type":"event"},{"anonymous":false,"inputs":[],"name":"Launch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"SetBots","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"SetBuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SetCooldownEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SetLimitsEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SetMaxBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SetMaxSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SetMaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWallet","type":"address"},{"indexed":false,"internalType":"address","name":"oldWallet","type":"address"}],"name":"SetOperationsWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"SetSellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"SetSwapTokensAtAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SetTaxesEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"SetTransferFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWallet","type":"address"},{"indexed":false,"internalType":"address","name":"oldWallet","type":"address"}],"name":"SetmarketingWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawStuckTokens","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"CanAddBots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DestroyAddBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsWallet","type":"address"}],"name":"EditOperationsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"EditmarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"ReduceBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"ReduceSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_transferFee","type":"uint256"}],"name":"ReduceTransferFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"RemoveAllLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"RemoveBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"RemoveCooldownLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"ToggleTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"adminWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","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":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLimitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTaxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTime","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":"maxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSell","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":"operationsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405234801561000f575f5ffd5b506040518060400160405280600e81526020017f436f6d70757465437265646974730000000000000000000000000000000000008152506040518060400160405280600381526020017f4350430000000000000000000000000000000000000000000000000000000000815250335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100ed575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100e49190611bf5565b60405180910390fd5b6100fc816104d160201b60201c565b50816004908161010c9190611e4b565b50806005908161011c9190611e4b565b5050505f33905061013f816b033b2e3c9fd0803ce800000061056b60201b60201c565b5f61014e6105f060201b60201c565b905073d644afe199c211287137b5e7311a5b085865f52460075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731f1944dd93191415d16b20be271d105af8f09fe460085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507378f7d1498bf8590151ae4429a1b6229bf582e9c960095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e8600e8261025c9190611f47565b6102669190611fb5565b600d819055506103e8600e8261027c9190611f47565b6102869190611fb5565b600e819055506103e8600e8261029c9190611f47565b6102a69190611fb5565b600f819055506103e86005826102bc9190611f47565b6102c69190611fb5565b6010819055506001600960146101000a81548160ff0219169083151502179055506001600960156101000a81548160ff0219169083151502179055506001600960166101000a81548160ff0219169083151502179055506001600960196101000a81548160ff021916908315150217905550601e601181905550603b601281905550603b601381905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506103a93060016105f960201b60201c565b6103bc61dead60016105f960201b60201c565b6103cd8260016105f960201b60201c565b6103ff60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016105f960201b60201c565b61043160085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016105f960201b60201c565b61044230600161068a60201b60201c565b61045561dead600161068a60201b60201c565b61046682600161068a60201b60201c565b61049860075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161068a60201b60201c565b6104ca60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161068a60201b60201c565b50506122f8565b5f6104e061071b60201b60201c565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461053657610525815f6105f960201b60201c565b610535815f61068a60201b60201c565b5b6105478260016105f960201b60201c565b61055882600161068a60201b60201c565b6105678261074260201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105db575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016105d29190611bf5565b60405180910390fd5b6105ec5f838361080360201b60201c565b5050565b5f600354905090565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7828260405161067e929190611fff565b60405180910390a15050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc92828260405161070f929190611fff565b60405180910390a15050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f3390505f32905060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561088c576040517fe6a6c0d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061090d575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b610943576040517fe6a6c0d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806109a857508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806109fa575060145f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b610a30576040517fe6a6c0d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960189054906101000a900460ff1680610a91575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80610ae2575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b610b18576040517f8dda39df00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600960149054906101000a900460ff168015610b425750600960179054906101000a900460ff16155b8015610be6575060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680610be4575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b155b905080156111ab57610bfc61071b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610c705750610c4061071b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015610ca857505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015610ce2575061dead73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156111aa57600960159054906101000a900460ff1615610ee85760805173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015610d87575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15610ee757600343610d999190612026565b60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054108015610e2c5750600343610dec9190612026565b60185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054105b610e62576040517fc069bb4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4360185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055504360185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015610f85575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561102057600d54841115610fc6576040517fb19dae1400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600f54610fd88661153360201b60201c565b85610fe39190612059565b111561101b576040517fd867451100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111a9565b60175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156110bd575060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561110357600e548411156110fe576040517fe2a90e1400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111a8565b60165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166111a757600f546111638661153360201b60201c565b8561116e9190612059565b11156111a6576040517fd867451100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b5b5b5b5f600960169054906101000a900460ff1680156111d55750600960179054906101000a900460ff16155b8015611279575060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611277575060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b155b90508015611478575f5f905060175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156112dc57505f601254115b15611302576064601254876112f19190611f47565b6112fb9190611fb5565b905061144e565b60175f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561135957505f601154115b1561137f5760646011548761136e9190611f47565b6113789190611fb5565b905061144d565b60175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561141d575060175f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561142a57505f601354115b1561144c5760646013548761143f9190611f47565b6114499190611fb5565b90505b5b5b5f8111156114765780866114629190612026565b955061147588308361157960201b60201c565b5b505b5f6114883061153360201b60201c565b90505f60105482101590508280156114e7575060175f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156114f05750805b1561151757600c544311156115165761150e8261179560201b60201c565b43600c819055505b5b61152889898961157960201b60201c565b505050505050505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115c9578060035f8282546115bd9190612059565b92505081905550611699565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611653578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161164a9392919061209b565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116e0578060035f828254039250508190555061172b565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161178891906120d0565b60405180910390a3505050565b6001600960176101000a81548160ff0219169083151502179055505f5f600267ffffffffffffffff8111156117cd576117cc611c18565b5b6040519080825280602002602001820160405280156117fb5781602001602082028036833780820191505090505b50905030815f81518110611812576118116120e9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611897573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118bb9190612144565b816001815181106118cf576118ce6120e9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60146010546119199190611f47565b905080841115611927578093505b60805173ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8530426040518663ffffffff1660e01b815260040161196a95949392919061225f565b5f604051808303815f87803b158015611981575f5ffd5b505af1158015611993573d5f5f3e3d5ffd5b505050505f4790505f6103e86064836119ac9190611f47565b6119b69190611fb5565b90505f6103e8610203846119ca9190611f47565b6119d49190611fb5565b90505f6103e8610181856119e89190611f47565b6119f29190611fb5565b905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051611a39906122e4565b5f6040518083038185875af1925050503d805f8114611a73576040519150601f19603f3d011682016040523d82523d5f602084013e611a78565b606091505b50508097505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611ac3906122e4565b5f6040518083038185875af1925050503d805f8114611afd576040519150601f19603f3d011682016040523d82523d5f602084013e611b02565b606091505b50508097505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051611b4d906122e4565b5f6040518083038185875af1925050503d805f8114611b87576040519150601f19603f3d011682016040523d82523d5f602084013e611b8c565b606091505b505080975050505050505050505f600960176101000a81548160ff02191690831515021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611bdf82611bb6565b9050919050565b611bef81611bd5565b82525050565b5f602082019050611c085f830184611be6565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611c8957607f821691505b602082108103611c9c57611c9b611c45565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302611cfe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611cc3565b611d088683611cc3565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f611d4c611d47611d4284611d20565b611d29565b611d20565b9050919050565b5f819050919050565b611d6583611d32565b611d79611d7182611d53565b848454611ccf565b825550505050565b5f5f905090565b611d90611d81565b611d9b818484611d5c565b505050565b5b81811015611dbe57611db35f82611d88565b600181019050611da1565b5050565b601f821115611e0357611dd481611ca2565b611ddd84611cb4565b81016020851015611dec578190505b611e00611df885611cb4565b830182611da0565b50505b505050565b5f82821c905092915050565b5f611e235f1984600802611e08565b1980831691505092915050565b5f611e3b8383611e14565b9150826002028217905092915050565b611e5482611c0e565b67ffffffffffffffff811115611e6d57611e6c611c18565b5b611e778254611c72565b611e82828285611dc2565b5f60209050601f831160018114611eb3575f8415611ea1578287015190505b611eab8582611e30565b865550611f12565b601f198416611ec186611ca2565b5f5b82811015611ee857848901518255600182019150602085019450602081019050611ec3565b86831015611f055784890151611f01601f891682611e14565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611f5182611d20565b9150611f5c83611d20565b9250828202611f6a81611d20565b91508282048414831517611f8157611f80611f1a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611fbf82611d20565b9150611fca83611d20565b925082611fda57611fd9611f88565b5b828204905092915050565b5f8115159050919050565b611ff981611fe5565b82525050565b5f6040820190506120125f830185611be6565b61201f6020830184611ff0565b9392505050565b5f61203082611d20565b915061203b83611d20565b925082820390508181111561205357612052611f1a565b5b92915050565b5f61206382611d20565b915061206e83611d20565b925082820190508082111561208657612085611f1a565b5b92915050565b61209581611d20565b82525050565b5f6060820190506120ae5f830186611be6565b6120bb602083018561208c565b6120c8604083018461208c565b949350505050565b5f6020820190506120e35f83018461208c565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5ffd5b61212381611bd5565b811461212d575f5ffd5b50565b5f8151905061213e8161211a565b92915050565b5f6020828403121561215957612158612116565b5b5f61216684828501612130565b91505092915050565b5f819050919050565b5f61219261218d6121888461216f565b611d29565b611d20565b9050919050565b6121a281612178565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6121da81611bd5565b82525050565b5f6121eb83836121d1565b60208301905092915050565b5f602082019050919050565b5f61220d826121a8565b61221781856121b2565b9350612222836121c2565b805f5b8381101561225257815161223988826121e0565b9750612244836121f7565b925050600181019050612225565b5085935050505092915050565b5f60a0820190506122725f83018861208c565b61227f6020830187612199565b81810360408301526122918186612203565b90506122a06060830185611be6565b6122ad608083018461208c565b9695505050505050565b5f81905092915050565b50565b5f6122cf5f836122b7565b91506122da826122c1565b5f82019050919050565b5f6122ee826122c4565b9150819050919050565b60805161485961234f5f395f8181610c7c01528181610cf801528181610da101528181610efa01528181610f4101528181611035015281816115c501528181612db70152818161397c0152613a7501526148595ff3fe6080604052600436106102e7575f3560e01c80638e84afec1161018f578063ba264714116100db578063dda4866f11610094578063e6c1909b1161006e578063e6c1909b14610ac6578063f2fde38b14610af0578063f8b45b0514610b18578063fd72e22a14610b42576102e8565b8063dda4866f14610a4c578063e2f4560514610a74578063e5c6ca3f14610a9e576102e8565b8063ba26471414610956578063cb9637281461096c578063d00efb2f14610994578063d107439b146109be578063d5759ba3146109e6578063dd62ed3e14610a10576102e8565b8063a9059cbb11610148578063afa4f3b211610122578063afa4f3b2146108a0578063b2f3bba2146108c8578063b62496f5146108f0578063b8eb35461461092c576102e8565b8063a9059cbb14610812578063acb2ad6f1461084e578063ad29ffde14610878576102e8565b80638e84afec1461071e578063926443521461074657806395d89b41146107705780639c0db5f31461079a5780639f7f283b146107c2578063a5b1114b146107ea576102e8565b80633bbac5791161024e5780636ca541e511610207578063715018a6116101e1578063715018a61461068a57806375f0a874146106a0578063790ca413146106ca5780638da5cb5b146106f4576102e8565b80636ca541e5146105fa57806370a082311461062457806370db69d614610660576102e8565b80633bbac579146104dc578063470624021461051857806349126a5e1461054257806349bd5a5e146105585780634fbee193146105825780635cce86cd146105be576102e8565b80631fcca0e8116102a05780631fcca0e8146103e257806323b872dd146103f85780632b14ca5614610434578063307aebc91461045e578063313ce5671461048857806336b19cd7146104b2576102e8565b806306fdde03146102ea578063095ea7b314610314578063106a5a8f146103505780631694505e1461037857806318160ddd146103a25780631d97b7cd146103cc576102e8565b5b005b3480156102f5575f5ffd5b506102fe610b6c565b60405161030b9190613d90565b60405180910390f35b34801561031f575f5ffd5b5061033a60048036038101906103359190613e45565b610bfc565b6040516103479190613e9d565b60405180910390f35b34801561035b575f5ffd5b5061037660048036038101906103719190613f41565b610c1e565b005b348015610383575f5ffd5b5061038c610c7a565b6040516103999190613ff9565b60405180910390f35b3480156103ad575f5ffd5b506103b6610c9e565b6040516103c39190614021565b60405180910390f35b3480156103d7575f5ffd5b506103e0610ca7565b005b3480156103ed575f5ffd5b506103f661112a565b005b348015610403575f5ffd5b5061041e6004803603810190610419919061403a565b61119d565b60405161042b9190613e9d565b60405180910390f35b34801561043f575f5ffd5b506104486111cb565b6040516104559190614021565b60405180910390f35b348015610469575f5ffd5b506104726111d1565b60405161047f9190613e9d565b60405180910390f35b348015610493575f5ffd5b5061049c6111e4565b6040516104a991906140a5565b60405180910390f35b3480156104bd575f5ffd5b506104c66111ec565b6040516104d391906140cd565b60405180910390f35b3480156104e7575f5ffd5b5061050260048036038101906104fd91906140e6565b611211565b60405161050f9190613e9d565b60405180910390f35b348015610523575f5ffd5b5061052c61122e565b6040516105399190614021565b60405180910390f35b34801561054d575f5ffd5b50610556611234565b005b348015610563575f5ffd5b5061056c61128f565b60405161057991906140cd565b60405180910390f35b34801561058d575f5ffd5b506105a860048036038101906105a391906140e6565b6112b4565b6040516105b59190613e9d565b60405180910390f35b3480156105c9575f5ffd5b506105e460048036038101906105df91906140e6565b6112d1565b6040516105f19190613e9d565b60405180910390f35b348015610605575f5ffd5b5061060e6112ee565b60405161061b9190613e9d565b60405180910390f35b34801561062f575f5ffd5b5061064a600480360381019061064591906140e6565b611301565b6040516106579190614021565b60405180910390f35b34801561066b575f5ffd5b50610674611347565b6040516106819190614021565b60405180910390f35b348015610695575f5ffd5b5061069e61134d565b005b3480156106ab575f5ffd5b506106b4611360565b6040516106c191906140cd565b60405180910390f35b3480156106d5575f5ffd5b506106de611385565b6040516106eb9190614021565b60405180910390f35b3480156106ff575f5ffd5b5061070861138b565b60405161071591906140cd565b60405180910390f35b348015610729575f5ffd5b50610744600480360381019061073f9190614111565b6113b2565b005b348015610751575f5ffd5b5061075a611440565b6040516107679190613e9d565b60405180910390f35b34801561077b575f5ffd5b50610784611453565b6040516107919190613d90565b60405180910390f35b3480156107a5575f5ffd5b506107c060048036038101906107bb9190613f41565b6114e3565b005b3480156107cd575f5ffd5b506107e860048036038101906107e391906140e6565b611837565b005b3480156107f5575f5ffd5b50610810600480360381019061080b91906140e6565b611967565b005b34801561081d575f5ffd5b5061083860048036038101906108339190613e45565b611a97565b6040516108459190613e9d565b60405180910390f35b348015610859575f5ffd5b50610862611ab9565b60405161086f9190614021565b60405180910390f35b348015610883575f5ffd5b5061089e60048036038101906108999190613f41565b611abf565b005b3480156108ab575f5ffd5b506108c660048036038101906108c19190614111565b611b1b565b005b3480156108d3575f5ffd5b506108ee60048036038101906108e991906140e6565b611c1e565b005b3480156108fb575f5ffd5b50610916600480360381019061091191906140e6565b611c33565b6040516109239190613e9d565b60405180910390f35b348015610937575f5ffd5b50610940611c50565b60405161094d9190614021565b60405180910390f35b348015610961575f5ffd5b5061096a611c56565b005b348015610977575f5ffd5b50610992600480360381019061098d91906140e6565b611cb1565b005b34801561099f575f5ffd5b506109a8611f42565b6040516109b59190614021565b60405180910390f35b3480156109c9575f5ffd5b506109e460048036038101906109df9190614111565b611f48565b005b3480156109f1575f5ffd5b506109fa611fd6565b604051610a079190613e9d565b60405180910390f35b348015610a1b575f5ffd5b50610a366004803603810190610a31919061413c565b611fe9565b604051610a439190614021565b60405180910390f35b348015610a57575f5ffd5b50610a726004803603810190610a6d919061417a565b61206b565b005b348015610a7f575f5ffd5b50610a886120c7565b604051610a959190614021565b60405180910390f35b348015610aa9575f5ffd5b50610ac46004803603810190610abf9190614111565b6120cd565b005b348015610ad1575f5ffd5b50610ada61215b565b604051610ae79190613e9d565b60405180910390f35b348015610afb575f5ffd5b50610b166004803603810190610b1191906140e6565b61216e565b005b348015610b23575f5ffd5b50610b2c6121f2565b604051610b399190614021565b60405180910390f35b348015610b4d575f5ffd5b50610b566121f8565b604051610b6391906140cd565b60405180910390f35b606060048054610b7b906141d2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba7906141d2565b8015610bf25780601f10610bc957610100808354040283529160200191610bf2565b820191905f5260205f20905b815481529060010190602001808311610bd557829003601f168201915b5050505050905090565b5f5f610c0661221d565b9050610c13818585612224565b600191505092915050565b610c26612236565b5f5f90505b83839050811015610c7457610c67848483818110610c4c57610c4b614202565b5b9050602002016020810190610c6191906140e6565b836122bd565b8080600101915050610c2b565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600354905090565b610caf612236565b600960189054906101000a900460ff1615610cf6576040517fcfa6d87800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d5f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d839190614243565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2c9190614243565b6040518363ffffffff1660e01b8152600401610e4992919061426e565b6020604051808303815f875af1158015610e65573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e899190614243565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ef460065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161234e565b610f3f307f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612224565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f8630611301565b5f5f610f9061138b565b426040518863ffffffff1660e01b8152600401610fb2969594939291906142ce565b60606040518083038185885af1158015610fce573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ff39190614341565b50505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611092929190614391565b6020604051808303815f875af11580156110ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d291906143cc565b506001600960186101000a81548160ff02191690831515021790555043600a8190555042600b819055507f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266960405160405180910390a1565b611132612236565b600960199054906101000a900460ff16611181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117890614441565b60405180910390fd5b5f600960196101000a81548160ff021916908315150217905550565b5f5f6111a761221d565b90506111b48582856123df565b6111bf858585612471565b60019150509392505050565b60125481565b600960189054906101000a900460ff1681565b5f6012905090565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6014602052805f5260405f205f915054906101000a900460ff1681565b60115481565b61123c612236565b5f600960156101000a81548160ff0219169083151502179055507f381fb4c4aa72df83c60e7e567b9b6faf3fc2b05a6da932da9f071d63442c828f5f6040516112859190613e9d565b60405180910390a1565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6015602052805f5260405f205f915054906101000a900460ff1681565b6016602052805f5260405f205f915054906101000a900460ff1681565b600960159054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600d5481565b611355612236565b61135e5f612561565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113ba612236565b6011548111156113f6576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6011549050816011819055507f5fcc0eea159d45a3b8d481be746c9beed251431a542a5fed4484be37ab783e8d828260405161143492919061445f565b60405180910390a15050565b600960199054906101000a900460ff1681565b606060058054611462906141d2565b80601f016020809104026020016040519081016040528092919081815260200182805461148e906141d2565b80156114d95780601f106114b0576101008083540402835291602001916114d9565b820191905f5260205f20905b8154815290600101906020018083116114bc57829003601f168201915b5050505050905090565b6114eb612236565b600960199054906101000a900460ff1661153a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611531906144d0565b60405180910390fd5b5f5f90505b838390508110156118315760175f8585848181106115605761155f614202565b5b905060200201602081019061157591906140e6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561163b57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1684848381811061160d5761160c614202565b5b905060200201602081019061162291906140e6565b73ffffffffffffffffffffffffffffffffffffffff1614155b801561169a57503073ffffffffffffffffffffffffffffffffffffffff1684848381811061166c5761166b614202565b5b905060200201602081019061168191906140e6565b73ffffffffffffffffffffffffffffffffffffffff1614155b80156116f957505f73ffffffffffffffffffffffffffffffffffffffff168484838181106116cb576116ca614202565b5b90506020020160208101906116e091906140e6565b73ffffffffffffffffffffffffffffffffffffffff1614155b80156117ed575060155f85858481811061171657611715614202565b5b905060200201602081019061172b91906140e6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117ec575060165f85858481811061178f5761178e614202565b5b90506020020160208101906117a491906140e6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b5b156118245761182384848381811061180857611807614202565b5b905060200201602081019061181d91906140e6565b836125d7565b5b808060010191505061153f565b50505050565b61183f612236565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118a4576040517f9fabe1c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe20a721838fcbbb3840bd5d97dde1ffeb479fe73d75736fa6fdfc0f220aae00560075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260405161195b92919061426e565b60405180910390a15050565b61196f612236565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119d4576040517f9fabe1c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc7437ce8158bef32791d96ac3bc7bc4bfb58de297e65d1f290f147ffe25c0f9360085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051611a8b92919061426e565b60405180910390a15050565b5f5f611aa161221d565b9050611aae818585612471565b600191505092915050565b60135481565b611ac7612236565b5f5f90505b83839050811015611b1557611b08848483818110611aed57611aec614202565b5b9050602002016020810190611b0291906140e6565b83612668565b8080600101915050611acc565b50505050565b611b23612236565b5f611b2c610c9e565b90506103e8600182611b3e919061451b565b611b489190614589565b821015611b81576040517f1fbaba3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6064600382611b90919061451b565b611b9a9190614589565b821115611bd3576040517ffd7850ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6010549050826010819055507f190dc7c30bc62ef30e35c5f5512ad715a1bd03230f2d89c965249246c8d8ecca8382604051611c1192919061445f565b60405180910390a1505050565b611c26612236565b611c30815f6125d7565b50565b6017602052805f5260405f205f915054906101000a900460ff1681565b600e5481565b611c5e612236565b5f600960146101000a81548160ff0219169083151502179055507ff771b1e218dc92494b39e21852f9c24c3b448d6697c2b485cc1f0cff3c9ec7815f604051611ca79190613e9d565b60405180910390a1565b611cb9612236565b5f3390505f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dd4575f4791505f8211611d2e576040517f4870bf9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1682604051611d52906145e6565b5f6040518083038185875af1925050503d805f8114611d8c576040519150601f19603f3d011682016040523d82523d5f602084013e611d91565b606091505b50508091505080611dce576040517f6730ca4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50611f04565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e0d91906140cd565b602060405180830381865afa158015611e28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e4c91906145fa565b90505f8111611e87576040517fdf95788300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611ec2929190614391565b6020604051808303815f875af1158015611ede573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f0291906143cc565b505b7f07c81a5e6d155913a9ed2ce53630058179c89fc94bb5de130620b0245c9f6a0b8382604051611f35929190614391565b60405180910390a1505050565b600a5481565b611f50612236565b601354811115611f8c576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6013549050816013819055507f8fd531ce6f3cbc5b8cc01a0413b630e3f11569780ee5cf8d0c78e03bca30bc258282604051611fca92919061445f565b60405180910390a15050565b600960149054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b612073612236565b80600960166101000a81548160ff0219169083151502179055507f06cf69227e5c2b5a71319bc3784f6a5355ea0ba2a69bc4c39d64413dfa5a012b816040516120bc9190613e9d565b60405180910390a150565b60105481565b6120d5612236565b601254811115612111576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6012549050816012819055507f125b37650f21d088600cef1223439f6a8bd70800debfd486c503a8a2d19d4b01828260405161214f92919061445f565b60405180910390a15050565b600960169054906101000a900460ff1681565b612176612236565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121e6575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016121dd91906140cd565b60405180910390fd5b6121ef81612561565b50565b600f5481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b61223183838360016126f9565b505050565b61223e61221d565b73ffffffffffffffffffffffffffffffffffffffff1661225c61138b565b73ffffffffffffffffffffffffffffffffffffffff16146122bb5761227f61221d565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016122b291906140cd565b60405180910390fd5b565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc928282604051612342929190614625565b60405180910390a15050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab82826040516123d3929190614625565b60405180910390a15050565b5f6123ea8484611fe9565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461246b578181101561245c578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016124539392919061464c565b60405180910390fd5b61246a84848484035f6126f9565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124e1575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016124d891906140cd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612551575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161254891906140cd565b60405180910390fd5b61255c8383836128c8565b505050565b5f61256a61138b565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146125b4576125a9815f612668565b6125b3815f6122bd565b5b6125bf826001612668565b6125ca8260016122bd565b6125d3826135e6565b5050565b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507ff7f8b40d08076851dfb7cfd6c584ae9a829a570f264abee45e0d7ca342ae8dc8828260405161265c929190614625565b60405180910390a15050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782826040516126ed929190614625565b60405180910390a15050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612769575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161276091906140cd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127d9575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016127d091906140cd565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156128c2578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516128b99190614021565b60405180910390a35b50505050565b5f3390505f32905060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612951576040517fe6a6c0d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806129d2575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612a08576040517fe6a6c0d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480612a6d57508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b80612abf575060145f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612af5576040517fe6a6c0d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960189054906101000a900460ff1680612b56575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612ba7575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612bdd576040517f8dda39df00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600960149054906101000a900460ff168015612c075750600960179054906101000a900460ff16155b8015612cab575060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612ca9575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b155b9050801561327657612cbb61138b565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015612d295750612cf961138b565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612d6157505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612d9b575061dead73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561327557600960159054906101000a900460ff1615612fbf577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612e5e575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612fbe57600343612e709190614681565b60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054108015612f035750600343612ec39190614681565b60185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054105b612f39576040517fc069bb4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4360185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055504360185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561305c575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156130f157600d5484111561309d576040517fb19dae1400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600f546130a986611301565b856130b491906146b4565b11156130ec576040517fd867451100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613274565b60175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561318e575060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156131d457600e548411156131cf576040517fe2a90e1400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613273565b60165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661327257600f5461322e86611301565b8561323991906146b4565b1115613271576040517fd867451100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b5b5b5b5f600960169054906101000a900460ff1680156132a05750600960179054906101000a900460ff16155b8015613344575060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613342575060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b155b9050801561353d575f5f905060175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156133a757505f601254115b156133cd576064601254876133bc919061451b565b6133c69190614589565b9050613519565b60175f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561342457505f601154115b1561344a57606460115487613439919061451b565b6134439190614589565b9050613518565b60175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156134e8575060175f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156134f557505f601354115b156135175760646013548761350a919061451b565b6135149190614589565b90505b5b5b5f81111561353b57808661352d9190614681565b955061353a8830836136a7565b5b505b5f61354730611301565b90505f60105482101590508280156135a6575060175f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156135af5750805b156135d057600c544311156135cf576135c7826138c3565b43600c819055505b5b6135db8989896136a7565b505050505050505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136f7578060035f8282546136eb91906146b4565b925050819055506137c7565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613781578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016137789392919061464c565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361380e578060035f8282540392505081905550613859565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138b69190614021565b60405180910390a3505050565b6001600960176101000a81548160ff0219169083151502179055505f5f600267ffffffffffffffff8111156138fb576138fa6146e7565b5b6040519080825280602002602001820160405280156139295781602001602082028036833780820191505090505b50905030815f815181106139405761393f614202565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139e3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a079190614243565b81600181518110613a1b57613a1a614202565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f6014601054613a65919061451b565b905080841115613a73578093505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8530426040518663ffffffff1660e01b8152600401613ad49594939291906147cb565b5f604051808303815f87803b158015613aeb575f5ffd5b505af1158015613afd573d5f5f3e3d5ffd5b505050505f4790505f6103e8606483613b16919061451b565b613b209190614589565b90505f6103e861020384613b34919061451b565b613b3e9190614589565b90505f6103e861018185613b52919061451b565b613b5c9190614589565b905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051613ba3906145e6565b5f6040518083038185875af1925050503d805f8114613bdd576040519150601f19603f3d011682016040523d82523d5f602084013e613be2565b606091505b50508097505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613c2d906145e6565b5f6040518083038185875af1925050503d805f8114613c67576040519150601f19603f3d011682016040523d82523d5f602084013e613c6c565b606091505b50508097505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613cb7906145e6565b5f6040518083038185875af1925050503d805f8114613cf1576040519150601f19603f3d011682016040523d82523d5f602084013e613cf6565b606091505b505080975050505050505050505f600960176101000a81548160ff02191690831515021790555050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613d6282613d20565b613d6c8185613d2a565b9350613d7c818560208601613d3a565b613d8581613d48565b840191505092915050565b5f6020820190508181035f830152613da88184613d58565b905092915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613de182613db8565b9050919050565b613df181613dd7565b8114613dfb575f5ffd5b50565b5f81359050613e0c81613de8565b92915050565b5f819050919050565b613e2481613e12565b8114613e2e575f5ffd5b50565b5f81359050613e3f81613e1b565b92915050565b5f5f60408385031215613e5b57613e5a613db0565b5b5f613e6885828601613dfe565b9250506020613e7985828601613e31565b9150509250929050565b5f8115159050919050565b613e9781613e83565b82525050565b5f602082019050613eb05f830184613e8e565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112613ed757613ed6613eb6565b5b8235905067ffffffffffffffff811115613ef457613ef3613eba565b5b602083019150836020820283011115613f1057613f0f613ebe565b5b9250929050565b613f2081613e83565b8114613f2a575f5ffd5b50565b5f81359050613f3b81613f17565b92915050565b5f5f5f60408486031215613f5857613f57613db0565b5b5f84013567ffffffffffffffff811115613f7557613f74613db4565b5b613f8186828701613ec2565b93509350506020613f9486828701613f2d565b9150509250925092565b5f819050919050565b5f613fc1613fbc613fb784613db8565b613f9e565b613db8565b9050919050565b5f613fd282613fa7565b9050919050565b5f613fe382613fc8565b9050919050565b613ff381613fd9565b82525050565b5f60208201905061400c5f830184613fea565b92915050565b61401b81613e12565b82525050565b5f6020820190506140345f830184614012565b92915050565b5f5f5f6060848603121561405157614050613db0565b5b5f61405e86828701613dfe565b935050602061406f86828701613dfe565b925050604061408086828701613e31565b9150509250925092565b5f60ff82169050919050565b61409f8161408a565b82525050565b5f6020820190506140b85f830184614096565b92915050565b6140c781613dd7565b82525050565b5f6020820190506140e05f8301846140be565b92915050565b5f602082840312156140fb576140fa613db0565b5b5f61410884828501613dfe565b91505092915050565b5f6020828403121561412657614125613db0565b5b5f61413384828501613e31565b91505092915050565b5f5f6040838503121561415257614151613db0565b5b5f61415f85828601613dfe565b925050602061417085828601613dfe565b9150509250929050565b5f6020828403121561418f5761418e613db0565b5b5f61419c84828501613f2d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806141e957607f821691505b6020821081036141fc576141fb6141a5565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061423d81613de8565b92915050565b5f6020828403121561425857614257613db0565b5b5f6142658482850161422f565b91505092915050565b5f6040820190506142815f8301856140be565b61428e60208301846140be565b9392505050565b5f819050919050565b5f6142b86142b36142ae84614295565b613f9e565b613e12565b9050919050565b6142c88161429e565b82525050565b5f60c0820190506142e15f8301896140be565b6142ee6020830188614012565b6142fb60408301876142bf565b61430860608301866142bf565b61431560808301856140be565b61432260a0830184614012565b979650505050505050565b5f8151905061433b81613e1b565b92915050565b5f5f5f6060848603121561435857614357613db0565b5b5f6143658682870161432d565b93505060206143768682870161432d565b92505060406143878682870161432d565b9150509250925092565b5f6040820190506143a45f8301856140be565b6143b16020830184614012565b9392505050565b5f815190506143c681613f17565b92915050565b5f602082840312156143e1576143e0613db0565b5b5f6143ee848285016143b8565b91505092915050565b7f416c72656164792044697361626c6564000000000000000000000000000000005f82015250565b5f61442b601083613d2a565b9150614436826143f7565b602082019050919050565b5f6020820190508181035f8301526144588161441f565b9050919050565b5f6040820190506144725f830185614012565b61447f6020830184614012565b9392505050565b7f43616e277420416464206d6f726520626f7473206e6f770000000000000000005f82015250565b5f6144ba601783613d2a565b91506144c582614486565b602082019050919050565b5f6020820190508181035f8301526144e7816144ae565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61452582613e12565b915061453083613e12565b925082820261453e81613e12565b91508282048414831517614555576145546144ee565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61459382613e12565b915061459e83613e12565b9250826145ae576145ad61455c565b5b828204905092915050565b5f81905092915050565b50565b5f6145d15f836145b9565b91506145dc826145c3565b5f82019050919050565b5f6145f0826145c6565b9150819050919050565b5f6020828403121561460f5761460e613db0565b5b5f61461c8482850161432d565b91505092915050565b5f6040820190506146385f8301856140be565b6146456020830184613e8e565b9392505050565b5f60608201905061465f5f8301866140be565b61466c6020830185614012565b6146796040830184614012565b949350505050565b5f61468b82613e12565b915061469683613e12565b92508282039050818111156146ae576146ad6144ee565b5b92915050565b5f6146be82613e12565b91506146c983613e12565b92508282019050808211156146e1576146e06144ee565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61474681613dd7565b82525050565b5f614757838361473d565b60208301905092915050565b5f602082019050919050565b5f61477982614714565b614783818561471e565b935061478e8361472e565b805f5b838110156147be5781516147a5888261474c565b97506147b083614763565b925050600181019050614791565b5085935050505092915050565b5f60a0820190506147de5f830188614012565b6147eb60208301876142bf565b81810360408301526147fd818661476f565b905061480c60608301856140be565b6148196080830184614012565b969550505050505056fea264697066735822122026d25e042ca89e81df7cd9b9255db9e332aa4d8241367a83790df7d6c5f487bb64736f6c634300081b0033

Deployed Bytecode

0x6080604052600436106102e7575f3560e01c80638e84afec1161018f578063ba264714116100db578063dda4866f11610094578063e6c1909b1161006e578063e6c1909b14610ac6578063f2fde38b14610af0578063f8b45b0514610b18578063fd72e22a14610b42576102e8565b8063dda4866f14610a4c578063e2f4560514610a74578063e5c6ca3f14610a9e576102e8565b8063ba26471414610956578063cb9637281461096c578063d00efb2f14610994578063d107439b146109be578063d5759ba3146109e6578063dd62ed3e14610a10576102e8565b8063a9059cbb11610148578063afa4f3b211610122578063afa4f3b2146108a0578063b2f3bba2146108c8578063b62496f5146108f0578063b8eb35461461092c576102e8565b8063a9059cbb14610812578063acb2ad6f1461084e578063ad29ffde14610878576102e8565b80638e84afec1461071e578063926443521461074657806395d89b41146107705780639c0db5f31461079a5780639f7f283b146107c2578063a5b1114b146107ea576102e8565b80633bbac5791161024e5780636ca541e511610207578063715018a6116101e1578063715018a61461068a57806375f0a874146106a0578063790ca413146106ca5780638da5cb5b146106f4576102e8565b80636ca541e5146105fa57806370a082311461062457806370db69d614610660576102e8565b80633bbac579146104dc578063470624021461051857806349126a5e1461054257806349bd5a5e146105585780634fbee193146105825780635cce86cd146105be576102e8565b80631fcca0e8116102a05780631fcca0e8146103e257806323b872dd146103f85780632b14ca5614610434578063307aebc91461045e578063313ce5671461048857806336b19cd7146104b2576102e8565b806306fdde03146102ea578063095ea7b314610314578063106a5a8f146103505780631694505e1461037857806318160ddd146103a25780631d97b7cd146103cc576102e8565b5b005b3480156102f5575f5ffd5b506102fe610b6c565b60405161030b9190613d90565b60405180910390f35b34801561031f575f5ffd5b5061033a60048036038101906103359190613e45565b610bfc565b6040516103479190613e9d565b60405180910390f35b34801561035b575f5ffd5b5061037660048036038101906103719190613f41565b610c1e565b005b348015610383575f5ffd5b5061038c610c7a565b6040516103999190613ff9565b60405180910390f35b3480156103ad575f5ffd5b506103b6610c9e565b6040516103c39190614021565b60405180910390f35b3480156103d7575f5ffd5b506103e0610ca7565b005b3480156103ed575f5ffd5b506103f661112a565b005b348015610403575f5ffd5b5061041e6004803603810190610419919061403a565b61119d565b60405161042b9190613e9d565b60405180910390f35b34801561043f575f5ffd5b506104486111cb565b6040516104559190614021565b60405180910390f35b348015610469575f5ffd5b506104726111d1565b60405161047f9190613e9d565b60405180910390f35b348015610493575f5ffd5b5061049c6111e4565b6040516104a991906140a5565b60405180910390f35b3480156104bd575f5ffd5b506104c66111ec565b6040516104d391906140cd565b60405180910390f35b3480156104e7575f5ffd5b5061050260048036038101906104fd91906140e6565b611211565b60405161050f9190613e9d565b60405180910390f35b348015610523575f5ffd5b5061052c61122e565b6040516105399190614021565b60405180910390f35b34801561054d575f5ffd5b50610556611234565b005b348015610563575f5ffd5b5061056c61128f565b60405161057991906140cd565b60405180910390f35b34801561058d575f5ffd5b506105a860048036038101906105a391906140e6565b6112b4565b6040516105b59190613e9d565b60405180910390f35b3480156105c9575f5ffd5b506105e460048036038101906105df91906140e6565b6112d1565b6040516105f19190613e9d565b60405180910390f35b348015610605575f5ffd5b5061060e6112ee565b60405161061b9190613e9d565b60405180910390f35b34801561062f575f5ffd5b5061064a600480360381019061064591906140e6565b611301565b6040516106579190614021565b60405180910390f35b34801561066b575f5ffd5b50610674611347565b6040516106819190614021565b60405180910390f35b348015610695575f5ffd5b5061069e61134d565b005b3480156106ab575f5ffd5b506106b4611360565b6040516106c191906140cd565b60405180910390f35b3480156106d5575f5ffd5b506106de611385565b6040516106eb9190614021565b60405180910390f35b3480156106ff575f5ffd5b5061070861138b565b60405161071591906140cd565b60405180910390f35b348015610729575f5ffd5b50610744600480360381019061073f9190614111565b6113b2565b005b348015610751575f5ffd5b5061075a611440565b6040516107679190613e9d565b60405180910390f35b34801561077b575f5ffd5b50610784611453565b6040516107919190613d90565b60405180910390f35b3480156107a5575f5ffd5b506107c060048036038101906107bb9190613f41565b6114e3565b005b3480156107cd575f5ffd5b506107e860048036038101906107e391906140e6565b611837565b005b3480156107f5575f5ffd5b50610810600480360381019061080b91906140e6565b611967565b005b34801561081d575f5ffd5b5061083860048036038101906108339190613e45565b611a97565b6040516108459190613e9d565b60405180910390f35b348015610859575f5ffd5b50610862611ab9565b60405161086f9190614021565b60405180910390f35b348015610883575f5ffd5b5061089e60048036038101906108999190613f41565b611abf565b005b3480156108ab575f5ffd5b506108c660048036038101906108c19190614111565b611b1b565b005b3480156108d3575f5ffd5b506108ee60048036038101906108e991906140e6565b611c1e565b005b3480156108fb575f5ffd5b50610916600480360381019061091191906140e6565b611c33565b6040516109239190613e9d565b60405180910390f35b348015610937575f5ffd5b50610940611c50565b60405161094d9190614021565b60405180910390f35b348015610961575f5ffd5b5061096a611c56565b005b348015610977575f5ffd5b50610992600480360381019061098d91906140e6565b611cb1565b005b34801561099f575f5ffd5b506109a8611f42565b6040516109b59190614021565b60405180910390f35b3480156109c9575f5ffd5b506109e460048036038101906109df9190614111565b611f48565b005b3480156109f1575f5ffd5b506109fa611fd6565b604051610a079190613e9d565b60405180910390f35b348015610a1b575f5ffd5b50610a366004803603810190610a31919061413c565b611fe9565b604051610a439190614021565b60405180910390f35b348015610a57575f5ffd5b50610a726004803603810190610a6d919061417a565b61206b565b005b348015610a7f575f5ffd5b50610a886120c7565b604051610a959190614021565b60405180910390f35b348015610aa9575f5ffd5b50610ac46004803603810190610abf9190614111565b6120cd565b005b348015610ad1575f5ffd5b50610ada61215b565b604051610ae79190613e9d565b60405180910390f35b348015610afb575f5ffd5b50610b166004803603810190610b1191906140e6565b61216e565b005b348015610b23575f5ffd5b50610b2c6121f2565b604051610b399190614021565b60405180910390f35b348015610b4d575f5ffd5b50610b566121f8565b604051610b6391906140cd565b60405180910390f35b606060048054610b7b906141d2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba7906141d2565b8015610bf25780601f10610bc957610100808354040283529160200191610bf2565b820191905f5260205f20905b815481529060010190602001808311610bd557829003601f168201915b5050505050905090565b5f5f610c0661221d565b9050610c13818585612224565b600191505092915050565b610c26612236565b5f5f90505b83839050811015610c7457610c67848483818110610c4c57610c4b614202565b5b9050602002016020810190610c6191906140e6565b836122bd565b8080600101915050610c2b565b50505050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600354905090565b610caf612236565b600960189054906101000a900460ff1615610cf6576040517fcfa6d87800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d5f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d839190614243565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2c9190614243565b6040518363ffffffff1660e01b8152600401610e4992919061426e565b6020604051808303815f875af1158015610e65573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e899190614243565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ef460065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161234e565b610f3f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612224565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f8630611301565b5f5f610f9061138b565b426040518863ffffffff1660e01b8152600401610fb2969594939291906142ce565b60606040518083038185885af1158015610fce573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ff39190614341565b50505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611092929190614391565b6020604051808303815f875af11580156110ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d291906143cc565b506001600960186101000a81548160ff02191690831515021790555043600a8190555042600b819055507f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266960405160405180910390a1565b611132612236565b600960199054906101000a900460ff16611181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117890614441565b60405180910390fd5b5f600960196101000a81548160ff021916908315150217905550565b5f5f6111a761221d565b90506111b48582856123df565b6111bf858585612471565b60019150509392505050565b60125481565b600960189054906101000a900460ff1681565b5f6012905090565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6014602052805f5260405f205f915054906101000a900460ff1681565b60115481565b61123c612236565b5f600960156101000a81548160ff0219169083151502179055507f381fb4c4aa72df83c60e7e567b9b6faf3fc2b05a6da932da9f071d63442c828f5f6040516112859190613e9d565b60405180910390a1565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6015602052805f5260405f205f915054906101000a900460ff1681565b6016602052805f5260405f205f915054906101000a900460ff1681565b600960159054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600d5481565b611355612236565b61135e5f612561565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113ba612236565b6011548111156113f6576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6011549050816011819055507f5fcc0eea159d45a3b8d481be746c9beed251431a542a5fed4484be37ab783e8d828260405161143492919061445f565b60405180910390a15050565b600960199054906101000a900460ff1681565b606060058054611462906141d2565b80601f016020809104026020016040519081016040528092919081815260200182805461148e906141d2565b80156114d95780601f106114b0576101008083540402835291602001916114d9565b820191905f5260205f20905b8154815290600101906020018083116114bc57829003601f168201915b5050505050905090565b6114eb612236565b600960199054906101000a900460ff1661153a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611531906144d0565b60405180910390fd5b5f5f90505b838390508110156118315760175f8585848181106115605761155f614202565b5b905060200201602081019061157591906140e6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561163b57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1684848381811061160d5761160c614202565b5b905060200201602081019061162291906140e6565b73ffffffffffffffffffffffffffffffffffffffff1614155b801561169a57503073ffffffffffffffffffffffffffffffffffffffff1684848381811061166c5761166b614202565b5b905060200201602081019061168191906140e6565b73ffffffffffffffffffffffffffffffffffffffff1614155b80156116f957505f73ffffffffffffffffffffffffffffffffffffffff168484838181106116cb576116ca614202565b5b90506020020160208101906116e091906140e6565b73ffffffffffffffffffffffffffffffffffffffff1614155b80156117ed575060155f85858481811061171657611715614202565b5b905060200201602081019061172b91906140e6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117ec575060165f85858481811061178f5761178e614202565b5b90506020020160208101906117a491906140e6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b5b156118245761182384848381811061180857611807614202565b5b905060200201602081019061181d91906140e6565b836125d7565b5b808060010191505061153f565b50505050565b61183f612236565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118a4576040517f9fabe1c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe20a721838fcbbb3840bd5d97dde1ffeb479fe73d75736fa6fdfc0f220aae00560075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260405161195b92919061426e565b60405180910390a15050565b61196f612236565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119d4576040517f9fabe1c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc7437ce8158bef32791d96ac3bc7bc4bfb58de297e65d1f290f147ffe25c0f9360085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051611a8b92919061426e565b60405180910390a15050565b5f5f611aa161221d565b9050611aae818585612471565b600191505092915050565b60135481565b611ac7612236565b5f5f90505b83839050811015611b1557611b08848483818110611aed57611aec614202565b5b9050602002016020810190611b0291906140e6565b83612668565b8080600101915050611acc565b50505050565b611b23612236565b5f611b2c610c9e565b90506103e8600182611b3e919061451b565b611b489190614589565b821015611b81576040517f1fbaba3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6064600382611b90919061451b565b611b9a9190614589565b821115611bd3576040517ffd7850ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6010549050826010819055507f190dc7c30bc62ef30e35c5f5512ad715a1bd03230f2d89c965249246c8d8ecca8382604051611c1192919061445f565b60405180910390a1505050565b611c26612236565b611c30815f6125d7565b50565b6017602052805f5260405f205f915054906101000a900460ff1681565b600e5481565b611c5e612236565b5f600960146101000a81548160ff0219169083151502179055507ff771b1e218dc92494b39e21852f9c24c3b448d6697c2b485cc1f0cff3c9ec7815f604051611ca79190613e9d565b60405180910390a1565b611cb9612236565b5f3390505f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dd4575f4791505f8211611d2e576040517f4870bf9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1682604051611d52906145e6565b5f6040518083038185875af1925050503d805f8114611d8c576040519150601f19603f3d011682016040523d82523d5f602084013e611d91565b606091505b50508091505080611dce576040517f6730ca4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50611f04565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e0d91906140cd565b602060405180830381865afa158015611e28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e4c91906145fa565b90505f8111611e87576040517fdf95788300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611ec2929190614391565b6020604051808303815f875af1158015611ede573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f0291906143cc565b505b7f07c81a5e6d155913a9ed2ce53630058179c89fc94bb5de130620b0245c9f6a0b8382604051611f35929190614391565b60405180910390a1505050565b600a5481565b611f50612236565b601354811115611f8c576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6013549050816013819055507f8fd531ce6f3cbc5b8cc01a0413b630e3f11569780ee5cf8d0c78e03bca30bc258282604051611fca92919061445f565b60405180910390a15050565b600960149054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b612073612236565b80600960166101000a81548160ff0219169083151502179055507f06cf69227e5c2b5a71319bc3784f6a5355ea0ba2a69bc4c39d64413dfa5a012b816040516120bc9190613e9d565b60405180910390a150565b60105481565b6120d5612236565b601254811115612111576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6012549050816012819055507f125b37650f21d088600cef1223439f6a8bd70800debfd486c503a8a2d19d4b01828260405161214f92919061445f565b60405180910390a15050565b600960169054906101000a900460ff1681565b612176612236565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121e6575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016121dd91906140cd565b60405180910390fd5b6121ef81612561565b50565b600f5481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b61223183838360016126f9565b505050565b61223e61221d565b73ffffffffffffffffffffffffffffffffffffffff1661225c61138b565b73ffffffffffffffffffffffffffffffffffffffff16146122bb5761227f61221d565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016122b291906140cd565b60405180910390fd5b565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc928282604051612342929190614625565b60405180910390a15050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab82826040516123d3929190614625565b60405180910390a15050565b5f6123ea8484611fe9565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461246b578181101561245c578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016124539392919061464c565b60405180910390fd5b61246a84848484035f6126f9565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124e1575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016124d891906140cd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612551575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161254891906140cd565b60405180910390fd5b61255c8383836128c8565b505050565b5f61256a61138b565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146125b4576125a9815f612668565b6125b3815f6122bd565b5b6125bf826001612668565b6125ca8260016122bd565b6125d3826135e6565b5050565b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507ff7f8b40d08076851dfb7cfd6c584ae9a829a570f264abee45e0d7ca342ae8dc8828260405161265c929190614625565b60405180910390a15050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782826040516126ed929190614625565b60405180910390a15050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612769575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161276091906140cd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127d9575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016127d091906140cd565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156128c2578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516128b99190614021565b60405180910390a35b50505050565b5f3390505f32905060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612951576040517fe6a6c0d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806129d2575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612a08576040517fe6a6c0d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480612a6d57508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b80612abf575060145f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612af5576040517fe6a6c0d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960189054906101000a900460ff1680612b56575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612ba7575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612bdd576040517f8dda39df00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600960149054906101000a900460ff168015612c075750600960179054906101000a900460ff16155b8015612cab575060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612ca9575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b155b9050801561327657612cbb61138b565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015612d295750612cf961138b565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612d6157505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612d9b575061dead73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561327557600960159054906101000a900460ff1615612fbf577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612e5e575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612fbe57600343612e709190614681565b60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054108015612f035750600343612ec39190614681565b60185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054105b612f39576040517fc069bb4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4360185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055504360185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561305c575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156130f157600d5484111561309d576040517fb19dae1400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600f546130a986611301565b856130b491906146b4565b11156130ec576040517fd867451100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613274565b60175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561318e575060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156131d457600e548411156131cf576040517fe2a90e1400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613273565b60165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661327257600f5461322e86611301565b8561323991906146b4565b1115613271576040517fd867451100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b5b5b5b5f600960169054906101000a900460ff1680156132a05750600960179054906101000a900460ff16155b8015613344575060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613342575060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b155b9050801561353d575f5f905060175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156133a757505f601254115b156133cd576064601254876133bc919061451b565b6133c69190614589565b9050613519565b60175f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561342457505f601154115b1561344a57606460115487613439919061451b565b6134439190614589565b9050613518565b60175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156134e8575060175f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156134f557505f601354115b156135175760646013548761350a919061451b565b6135149190614589565b90505b5b5b5f81111561353b57808661352d9190614681565b955061353a8830836136a7565b5b505b5f61354730611301565b90505f60105482101590508280156135a6575060175f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156135af5750805b156135d057600c544311156135cf576135c7826138c3565b43600c819055505b5b6135db8989896136a7565b505050505050505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136f7578060035f8282546136eb91906146b4565b925050819055506137c7565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613781578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016137789392919061464c565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361380e578060035f8282540392505081905550613859565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138b69190614021565b60405180910390a3505050565b6001600960176101000a81548160ff0219169083151502179055505f5f600267ffffffffffffffff8111156138fb576138fa6146e7565b5b6040519080825280602002602001820160405280156139295781602001602082028036833780820191505090505b50905030815f815181106139405761393f614202565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139e3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a079190614243565b81600181518110613a1b57613a1a614202565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f6014601054613a65919061451b565b905080841115613a73578093505b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8530426040518663ffffffff1660e01b8152600401613ad49594939291906147cb565b5f604051808303815f87803b158015613aeb575f5ffd5b505af1158015613afd573d5f5f3e3d5ffd5b505050505f4790505f6103e8606483613b16919061451b565b613b209190614589565b90505f6103e861020384613b34919061451b565b613b3e9190614589565b90505f6103e861018185613b52919061451b565b613b5c9190614589565b905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051613ba3906145e6565b5f6040518083038185875af1925050503d805f8114613bdd576040519150601f19603f3d011682016040523d82523d5f602084013e613be2565b606091505b50508097505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613c2d906145e6565b5f6040518083038185875af1925050503d805f8114613c67576040519150601f19603f3d011682016040523d82523d5f602084013e613c6c565b606091505b50508097505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613cb7906145e6565b5f6040518083038185875af1925050503d805f8114613cf1576040519150601f19603f3d011682016040523d82523d5f602084013e613cf6565b606091505b505080975050505050505050505f600960176101000a81548160ff02191690831515021790555050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613d6282613d20565b613d6c8185613d2a565b9350613d7c818560208601613d3a565b613d8581613d48565b840191505092915050565b5f6020820190508181035f830152613da88184613d58565b905092915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613de182613db8565b9050919050565b613df181613dd7565b8114613dfb575f5ffd5b50565b5f81359050613e0c81613de8565b92915050565b5f819050919050565b613e2481613e12565b8114613e2e575f5ffd5b50565b5f81359050613e3f81613e1b565b92915050565b5f5f60408385031215613e5b57613e5a613db0565b5b5f613e6885828601613dfe565b9250506020613e7985828601613e31565b9150509250929050565b5f8115159050919050565b613e9781613e83565b82525050565b5f602082019050613eb05f830184613e8e565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112613ed757613ed6613eb6565b5b8235905067ffffffffffffffff811115613ef457613ef3613eba565b5b602083019150836020820283011115613f1057613f0f613ebe565b5b9250929050565b613f2081613e83565b8114613f2a575f5ffd5b50565b5f81359050613f3b81613f17565b92915050565b5f5f5f60408486031215613f5857613f57613db0565b5b5f84013567ffffffffffffffff811115613f7557613f74613db4565b5b613f8186828701613ec2565b93509350506020613f9486828701613f2d565b9150509250925092565b5f819050919050565b5f613fc1613fbc613fb784613db8565b613f9e565b613db8565b9050919050565b5f613fd282613fa7565b9050919050565b5f613fe382613fc8565b9050919050565b613ff381613fd9565b82525050565b5f60208201905061400c5f830184613fea565b92915050565b61401b81613e12565b82525050565b5f6020820190506140345f830184614012565b92915050565b5f5f5f6060848603121561405157614050613db0565b5b5f61405e86828701613dfe565b935050602061406f86828701613dfe565b925050604061408086828701613e31565b9150509250925092565b5f60ff82169050919050565b61409f8161408a565b82525050565b5f6020820190506140b85f830184614096565b92915050565b6140c781613dd7565b82525050565b5f6020820190506140e05f8301846140be565b92915050565b5f602082840312156140fb576140fa613db0565b5b5f61410884828501613dfe565b91505092915050565b5f6020828403121561412657614125613db0565b5b5f61413384828501613e31565b91505092915050565b5f5f6040838503121561415257614151613db0565b5b5f61415f85828601613dfe565b925050602061417085828601613dfe565b9150509250929050565b5f6020828403121561418f5761418e613db0565b5b5f61419c84828501613f2d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806141e957607f821691505b6020821081036141fc576141fb6141a5565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061423d81613de8565b92915050565b5f6020828403121561425857614257613db0565b5b5f6142658482850161422f565b91505092915050565b5f6040820190506142815f8301856140be565b61428e60208301846140be565b9392505050565b5f819050919050565b5f6142b86142b36142ae84614295565b613f9e565b613e12565b9050919050565b6142c88161429e565b82525050565b5f60c0820190506142e15f8301896140be565b6142ee6020830188614012565b6142fb60408301876142bf565b61430860608301866142bf565b61431560808301856140be565b61432260a0830184614012565b979650505050505050565b5f8151905061433b81613e1b565b92915050565b5f5f5f6060848603121561435857614357613db0565b5b5f6143658682870161432d565b93505060206143768682870161432d565b92505060406143878682870161432d565b9150509250925092565b5f6040820190506143a45f8301856140be565b6143b16020830184614012565b9392505050565b5f815190506143c681613f17565b92915050565b5f602082840312156143e1576143e0613db0565b5b5f6143ee848285016143b8565b91505092915050565b7f416c72656164792044697361626c6564000000000000000000000000000000005f82015250565b5f61442b601083613d2a565b9150614436826143f7565b602082019050919050565b5f6020820190508181035f8301526144588161441f565b9050919050565b5f6040820190506144725f830185614012565b61447f6020830184614012565b9392505050565b7f43616e277420416464206d6f726520626f7473206e6f770000000000000000005f82015250565b5f6144ba601783613d2a565b91506144c582614486565b602082019050919050565b5f6020820190508181035f8301526144e7816144ae565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61452582613e12565b915061453083613e12565b925082820261453e81613e12565b91508282048414831517614555576145546144ee565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61459382613e12565b915061459e83613e12565b9250826145ae576145ad61455c565b5b828204905092915050565b5f81905092915050565b50565b5f6145d15f836145b9565b91506145dc826145c3565b5f82019050919050565b5f6145f0826145c6565b9150819050919050565b5f6020828403121561460f5761460e613db0565b5b5f61461c8482850161432d565b91505092915050565b5f6040820190506146385f8301856140be565b6146456020830184613e8e565b9392505050565b5f60608201905061465f5f8301866140be565b61466c6020830185614012565b6146796040830184614012565b949350505050565b5f61468b82613e12565b915061469683613e12565b92508282039050818111156146ae576146ad6144ee565b5b92915050565b5f6146be82613e12565b91506146c983613e12565b92508282019050808211156146e1576146e06144ee565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61474681613dd7565b82525050565b5f614757838361473d565b60208301905092915050565b5f602082019050919050565b5f61477982614714565b614783818561471e565b935061478e8361472e565b805f5b838110156147be5781516147a5888261474c565b97506147b083614763565b925050600181019050614791565b5085935050505092915050565b5f60a0820190506147de5f830188614012565b6147eb60208301876142bf565b81810360408301526147fd818661476f565b905061480c60608301856140be565b6148196080830184614012565b969550505050505056fea264697066735822122026d25e042ca89e81df7cd9b9255db9e332aa4d8241367a83790df7d6c5f487bb64736f6c634300081b0033

Deployed Bytecode Sourcemap

8922:15315:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2476:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3384:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16812:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8971:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2770:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13574:753;;;;;;;;;;;;;:::i;:::-;;17059:132;;;;;;;;;;;;;:::i;:::-;;3614:283;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9764:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9428;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2678:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9262:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9828:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9736:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15117:135;;;;;;;;;;;;;:::i;:::-;;9150:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9872:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9929:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9331:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2877:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9606:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7592:103;;;;;;;;;;;;;:::i;:::-;;9225:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9521:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7323:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15813:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9457:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2575:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17199:632;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14335:308;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14651:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3003:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9793:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16569:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15401:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17837:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9988:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9634:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14982:127;;;;;;;;;;;;;:::i;:::-;;17949:676;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9488:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16290:271;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9297:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3193:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15266:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9696:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16047:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9367:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7703:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9663:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9187:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2476:91;2521:13;2554:5;2547:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2476:91;:::o;3384:222::-;3484:4;3506:13;3522:12;:10;:12::i;:::-;3506:28;;3545:31;3554:5;3561:7;3570:5;3545:8;:31::i;:::-;3594:4;3587:11;;;3384:222;;;;:::o;16812:239::-;7282:13;:11;:13::i;:::-;16938:9:::1;16950:1;16938:13;;16933:111;16957:8;;:15;;16953:1;:19;16933:111;;;16994:38;17013:8;;17022:1;17013:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17026:5;16994:18;:38::i;:::-;16974:3;;;;;;;16933:111;;;;16812:239:::0;;;:::o;8971:49::-;;;:::o;2770:99::-;2822:7;2849:12;;2842:19;;2770:99;:::o;13574:753::-;7282:13;:11;:13::i;:::-;13638:10:::1;;;;;;;;;;;13637:11;13629:39;;;;;;;;;;;;;;;;;13715:15;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13697:55;;;13775:4;13795:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13697:131;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13681:13;;:147;;;;;;;;;;;;;;;;;;13841:49;13870:13;;;;;;;;;;;13885:4;13841:28;:49::i;:::-;13901:68;13918:4;13933:15;13951:17;13901:8;:68::i;:::-;13980:15;:31;;;14019:21;14050:4;14056:24;14074:4;14056:9;:24::i;:::-;14081:1;14083;14085:7;:5;:7::i;:::-;14093:15;13980:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14127:13;;;;;;;;;;;14120:29;;;14158:15;14176:14;14120:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14215:4;14202:10;;:17;;;;;;;;;;;;;;;;;;14244:12;14230:11;:26;;;;14280:15;14267:10;:28;;;;14311:8;;;;;;;;;;13574:753::o:0;17059:132::-;7282:13;:11;:13::i;:::-;17123:10:::1;;;;;;;;;;;17115:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;17178:5;17165:10;;:18;;;;;;;;;;;;;;;;;;17059:132::o:0;3614:283::-;3735:4;3752:15;3770:12;:10;:12::i;:::-;3752:30;;3793:37;3809:4;3815:7;3824:5;3793:15;:37::i;:::-;3841:26;3851:4;3857:2;3861:5;3841:9;:26::i;:::-;3885:4;3878:11;;;3614:283;;;;;:::o;9764:22::-;;;;:::o;9428:::-;;;;;;;;;;;;;:::o;2678:84::-;2727:5;2752:2;2745:9;;2678:84;:::o;9262:26::-;;;;;;;;;;;;;:::o;9828:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;9736:21::-;;;;:::o;15117:135::-;7282:13;:11;:13::i;:::-;15198:5:::1;15178:17;;:25;;;;;;;;;;;;;;;;;;15219;15238:5;15219:25;;;;;;:::i;:::-;;;;;;;;15117:135::o:0;9150:28::-;;;;;;;;;;;;;:::o;9872:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;9929:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;9331:29::-;;;;;;;;;;;;;:::o;2877:118::-;2942:7;2969:9;:18;2979:7;2969:18;;;;;;;;;;;;;;;;2962:25;;2877:118;;;:::o;9606:21::-;;;;:::o;7592:103::-;7282:13;:11;:13::i;:::-;7657:30:::1;7684:1;7657:18;:30::i;:::-;7592:103::o:0;9225:30::-;;;;;;;;;;;;;:::o;9521:25::-;;;;:::o;7323:87::-;7369:7;7396:6;;;;;;;;;;;7389:13;;7323:87;:::o;15813:226::-;7282:13;:11;:13::i;:::-;15902:6:::1;;15891:7;:17;;15883:40;;;;;;;;;;;;;;;;;15934:16;15953:6;;15934:25;;15979:7;15970:6;:16;;;;16002:29;16013:7;16022:8;16002:29;;;;;;;:::i;:::-;;;;;;;;15872:167;15813:226:::0;:::o;9457:22::-;;;;;;;;;;;;;:::o;2575:95::-;2622:13;2655:7;2648:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2575:95;:::o;17199:632::-;7282:13;:11;:13::i;:::-;17318:10:::1;;;;;;;;;;;17310:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;17372:9;17384:1;17372:13;;17367:457;17391:8;;:15;;17387:1;:19;17367:457;;;17452:25;:38;17478:8;;17487:1;17478:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17452:38;;;;;;;;;;;;;;;;;;;;;;;;;17451:39;17450:103;;;;;17536:15;17513:39;;:8;;17522:1;17513:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:39;;;;17450:103;:154;;;;;17598:4;17575:28;;:8;;17584:1;17575:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:28;;;;17450:154;:204;;;;;9077:1;17626:27;;:8;;17635:1;17626:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:27;;;;17450:204;:318;;;;;17677:18;:31;17696:8;;17705:1;17696:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17677:31;;;;;;;;;;;;;;;;;;;;;;;;;17676:32;:91;;;;;17734:20;:33;17755:8;;17764:1;17755:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17734:33;;;;;;;;;;;;;;;;;;;;;;;;;17733:34;17676:91;17450:318;17428:384;;;17784:28;17793:8;;17802:1;17793:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17806:5;17784:8;:28::i;:::-;17428:384;17408:3;;;;;;;17367:457;;;;17199:632:::0;;;:::o;14335:308::-;7282:13;:11;:13::i;:::-;14459:1:::1;14430:31;;:17;:31;;::::0;14422:55:::1;;;;;;;;;;;;;;;;;14488:17;14508:16;;;;;;;;;;;14488:36;;14554:17;14535:16;;:36;;;;;;;;;;;;;;;;;;14587:48;14607:16;;;;;;;;;;;14625:9;14587:48;;;;;;;:::i;:::-;;;;;;;;14411:232;14335:308:::0;:::o;14651:323::-;7282:13;:11;:13::i;:::-;14795:1:::1;14767:30;;:16;:30;;::::0;14759:54:::1;;;;;;;;;;;;;;;;;14824:17;14844:15;;;;;;;;;;;14824:35;;14888:16;14870:15;;:34;;;;;;;;;;;;;;;;;;14920:46;14939:15;;;;;;;;;;;14956:9;14920:46;;;;;;;:::i;:::-;;;;;;;;14748:226;14651:323:::0;:::o;3003:182::-;3072:4;3089:13;3105:12;:10;:12::i;:::-;3089:28;;3128:27;3138:5;3145:2;3149:5;3128:9;:27::i;:::-;3173:4;3166:11;;;3003:182;;;;:::o;9793:26::-;;;;:::o;16569:235::-;7282:13;:11;:13::i;:::-;16693:9:::1;16705:1;16693:13;;16688:109;16712:8;;:15;;16708:1;:19;16688:109;;;16749:36;16766:8;;16775:1;16766:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16779:5;16749:16;:36::i;:::-;16729:3;;;;;;;16688:109;;;;16569:235:::0;;;:::o;15401:404::-;7282:13;:11;:13::i;:::-;15478:20:::1;15501:13;:11;:13::i;:::-;15478:36;;15564:4;15559:1;15544:12;:16;;;;:::i;:::-;15543:25;;;;:::i;:::-;15533:6;:35;;15525:60;;;;;;;;;;;;;;;;;15635:3;15630:1;15615:12;:16;;;;:::i;:::-;15614:24;;;;:::i;:::-;15604:6;:34;;15596:60;;;;;;;;;;;;;;;;;15667:16;15686:18;;15667:37;;15736:6;15715:18;:27;;;;15758:39;15780:6;15788:8;15758:39;;;;;;;:::i;:::-;;;;;;;;15467:338;;15401:404:::0;:::o;17837:104::-;7282:13;:11;:13::i;:::-;17909:24:::1;17918:7;17927:5;17909:8;:24::i;:::-;17837:104:::0;:::o;9988:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;9634:22::-;;;;:::o;14982:127::-;7282:13;:11;:13::i;:::-;15057:5:::1;15039:15;;:23;;;;;;;;;;;;;;;;;;15078;15095:5;15078:23;;;;;;:::i;:::-;;;;;;;;14982:127::o:0;17949:676::-;7282:13;:11;:13::i;:::-;18024:14:::1;18041:10;18024:27;;18062:14;9077:1;18091:22;;:6;:22;;::::0;18087:480:::1;;18130:12;18166:21;18157:30;;18219:1;18210:6;:10;18202:37;;;;;;;;;;;;;;;;;18276:6;18268:20;;18296:6;18268:39;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18254:53;;;;;18330:7;18322:48;;;;;;;;;;;;;;;;;18115:267;18087:480;;;18419:6;18412:24;;;18445:4;18412:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18403:48;;18483:1;18474:6;:10;18466:31;;;;;;;;;;;;;;;;;18519:6;18512:23;;;18536:10;18548:6;18512:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18087:480;18582:35;18602:6;18610;18582:35;;;;;;;:::i;:::-;;;;;;;;18013:612;;17949:676:::0;:::o;9488:26::-;;;;:::o;16290:271::-;7282:13;:11;:13::i;:::-;16394:11:::1;;16378:12;:27;;16370:50;;;;;;;;;;;;;;;;;16431:16;16450:11;;16431:30;;16486:12;16472:11;:26;;;;16514:39;16530:12;16544:8;16514:39;;;;;;;:::i;:::-;;;;;;;;16359:202;16290:271:::0;:::o;9297:27::-;;;;;;;;;;;;;:::o;3193:183::-;3309:7;3341:11;:18;3353:5;3341:18;;;;;;;;;;;;;;;:27;3360:7;3341:27;;;;;;;;;;;;;;;;3334:34;;3193:183;;;;:::o;15266:127::-;7282:13;:11;:13::i;:::-;15342:5:::1;15327:12;;:20;;;;;;;;;;;;;;;;;;15363:22;15379:5;15363:22;;;;;;:::i;:::-;;;;;;;;15266:127:::0;:::o;9696:33::-;;;;:::o;16047:235::-;7282:13;:11;:13::i;:::-;16139:7:::1;;16127:8;:19;;16119:42;;;;;;;;;;;;;;;;;16172:16;16191:7;;16172:26;;16219:8;16209:7;:18;;;;16243:31;16255:8;16265;16243:31;;;;;;;:::i;:::-;;;;;;;;16108:174;16047:235:::0;:::o;9367:24::-;;;;;;;;;;;;;:::o;7703:220::-;7282:13;:11;:13::i;:::-;7808:1:::1;7788:22;;:8;:22;;::::0;7784:93:::1;;7862:1;7834:31;;;;;;;;;;;:::i;:::-;;;;;;;;7784:93;7887:28;7906:8;7887:18;:28::i;:::-;7703:220:::0;:::o;9663:24::-;;;;:::o;9187:31::-;;;;;;;;;;;;;:::o;1349:98::-;1402:7;1429:10;1422:17;;1349:98;:::o;5475:164::-;5594:37;5603:5;5610:7;5619:5;5626:4;5594:8;:37::i;:::-;5475:164;;;:::o;7418:166::-;7489:12;:10;:12::i;:::-;7478:23;;:7;:5;:7::i;:::-;:23;;;7474:103;;7552:12;:10;:12::i;:::-;7525:40;;;;;;;;;;;:::i;:::-;;;;;;;;7474:103;7418:166::o;23677:179::-;23794:5;23762:20;:29;23783:7;23762:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;23815:33;23833:7;23842:5;23815:33;;;;;;;:::i;:::-;;;;;;;;23677:179;;:::o;24016:218::-;24165:5;24131:25;:31;24157:4;24131:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24186:40;24214:4;24220:5;24186:40;;;;;;;:::i;:::-;;;;;;;;24016:218;;:::o;6141:603::-;6275:24;6302:25;6312:5;6319:7;6302:9;:25::i;:::-;6275:52;;6362:17;6342:16;:37;6338:399;;6419:5;6400:16;:24;6396:214;;;6501:7;6531:16;6570:5;6452:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;6396:214;6653:57;6662:5;6669:7;6697:5;6678:16;:24;6704:5;6653:8;:57::i;:::-;6338:399;6264:480;6141:603;;;:::o;3905:342::-;4039:1;4023:18;;:4;:18;;;4019:88;;4092:1;4065:30;;;;;;;;;;;:::i;:::-;;;;;;;;4019:88;4135:1;4121:16;;:2;:16;;;4117:88;;4190:1;4161:32;;;;;;;;;;;:::i;:::-;;;;;;;;4117:88;4215:24;4223:4;4229:2;4233:5;4215:7;:24::i;:::-;3905:342;;;:::o;13176:390::-;13251:16;13270:7;:5;:7::i;:::-;13251:26;;13312:1;13292:22;;:8;:22;;;13288:138;;13331:33;13348:8;13358:5;13331:16;:33::i;:::-;13379:35;13398:8;13408:5;13379:18;:35::i;:::-;13288:138;13436:32;13453:8;13463:4;13436:16;:32::i;:::-;13479:34;13498:8;13508:4;13479:18;:34::i;:::-;13524;13549:8;13524:24;:34::i;:::-;13240:326;13176:390;:::o;23864:144::-;23956:5;23939;:14;23945:7;23939:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;23977:23;23985:7;23994:5;23977:23;;;;;;;:::i;:::-;;;;;;;;23864:144;;:::o;23496:173::-;23609:5;23579:18;:27;23598:7;23579:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;23630:31;23646:7;23655:5;23630:31;;;;;;;:::i;:::-;;;;;;;;23496:173;;:::o;5647:486::-;5820:1;5803:19;;:5;:19;;;5799:91;;5875:1;5846:32;;;;;;;;;;;:::i;:::-;;;;;;;;5799:91;5923:1;5904:21;;:7;:21;;;5900:92;;5977:1;5949:31;;;;;;;;;;;:::i;:::-;;;;;;;;5900:92;6032:5;6002:11;:18;6014:5;6002:18;;;;;;;;;;;;;;;:27;6021:7;6002:27;;;;;;;;;;;;;;;:35;;;;6052:9;6048:78;;;6099:7;6083:31;;6092:5;6083:31;;;6108:5;6083:31;;;;;;:::i;:::-;;;;;;;;6048:78;5647:486;;;;:::o;18633:3708::-;18763:14;18780:10;18763:27;;18801:14;18818:9;18801:26;;18849:5;:11;18855:4;18849:11;;;;;;;;;;;;;;;;;;;;;;;;;18848:12;18840:36;;;;;;;;;;;;;;;;;18905:4;18895:14;;:6;:14;;;:32;;;;18914:5;:13;18920:6;18914:13;;;;;;;;;;;;;;;;;;;;;;;;;18913:14;18895:32;18887:56;;;;;;;;;;;;;;;;;18986:4;18976:14;;:6;:14;;;:34;;;;19004:6;18994:16;;:6;:16;;;18976:34;:52;;;;19015:5;:13;19021:6;19015:13;;;;;;;;;;;;;;;;;;;;;;;;;19014:14;18976:52;18954:113;;;;;;;;;;;;;;;;;19102:10;;;;;;;;;;;:57;;;;19133:20;:26;19154:4;19133:26;;;;;;;;;;;;;;;;;;;;;;;;;19102:57;:102;;;;19180:20;:24;19201:2;19180:24;;;;;;;;;;;;;;;;;;;;;;;;;19102:102;19080:163;;;;;;;;;;;;;;;;;19256:11;19270:15;;;;;;;;;;;:43;;;;;19303:10;;;;;;;;;;;19302:11;19270:43;:117;;;;;19332:20;:26;19353:4;19332:26;;;;;;;;;;;;;;;;;;;;;;;;;:54;;;;19362:20;:24;19383:2;19362:24;;;;;;;;;;;;;;;;;;;;;;;;;19332:54;19330:57;19270:117;19256:131;;19402:6;19398:1691;;;19455:7;:5;:7::i;:::-;19447:15;;:4;:15;;;;:49;;;;;19489:7;:5;:7::i;:::-;19483:13;;:2;:13;;;;19447:49;:88;;;;;9077:1;19517:18;;:2;:18;;;;19447:88;:127;;;;;9134:6;19556:18;;:2;:18;;;;19447:127;19425:1653;;;19613:17;;;;;;;;;;;19609:647;;;19673:15;19659:30;;:2;:30;;;;:53;;;;;19699:13;;;;;;;;;;;19693:19;;:2;:19;;;;19659:53;19655:582;;;19866:1;19851:12;:16;;;;:::i;:::-;19779:28;:36;19808:6;19779:36;;;;;;;;;;;;;;;;:88;:209;;;;;19987:1;19972:12;:16;;;;:::i;:::-;19904:28;:32;19933:2;19904:32;;;;;;;;;;;;;;;;:84;19779:209;19741:320;;;;;;;;;;;;;;;;;20127:12;20088:28;:36;20117:6;20088:36;;;;;;;;;;;;;;;:51;;;;20201:12;20166:28;:32;20195:2;20166:32;;;;;;;;;;;;;;;:47;;;;19655:582;19609:647;20302:25;:31;20328:4;20302:31;;;;;;;;;;;;;;;;;;;;;;;;;:60;;;;;20338:20;:24;20359:2;20338:24;;;;;;;;;;;;;;;;;;;;;;;;;20337:25;20302:60;20276:787;;;20423:6;;20413;:16;;20405:47;;;;;;;;;;;;;;;;;20535:9;;20518:13;20528:2;20518:9;:13::i;:::-;20509:6;:22;;;;:::i;:::-;:35;;20475:142;;;;;;;;;;;;;;;;;20276:787;;;20669:25;:29;20695:2;20669:29;;;;;;;;;;;;;;;;;;;;;;;;;:60;;;;;20703:20;:26;20724:4;20703:26;;;;;;;;;;;;;;;;;;;;;;;;;20702:27;20669:60;20643:420;;;20790:7;;20780:6;:17;;20772:49;;;;;;;;;;;;;;;;;20643:420;;;20852:20;:24;20873:2;20852:24;;;;;;;;;;;;;;;;;;;;;;;;;20847:216;;20961:9;;20944:13;20954:2;20944:9;:13::i;:::-;20935:6;:22;;;;:::i;:::-;:35;;20901:142;;;;;;;;;;;;;;;;;20847:216;20643:420;20276:787;19425:1653;19398:1691;21101:12;21116;;;;;;;;;;;:40;;;;;21146:10;;;;;;;;;;;21145:11;21116:40;:110;;;;;21175:18;:24;21194:4;21175:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;21203:18;:22;21222:2;21203:22;;;;;;;;;;;;;;;;;;;;;;;;;21175:50;21173:53;21116:110;21101:125;;21243:7;21239:679;;;21267:12;21282:1;21267:16;;21302:25;:29;21328:2;21302:29;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;;21345:1;21335:7;;:11;21302:44;21298:471;;;21395:3;21384:7;;21375:6;:16;;;;:::i;:::-;21374:24;;;;:::i;:::-;21367:31;;21298:471;;;21424:25;:31;21450:4;21424:31;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;21468:1;21459:6;;:10;21424:45;21420:349;;;21517:3;21507:6;;21498;:15;;;;:::i;:::-;21497:23;;;;:::i;:::-;21490:30;;21420:349;;;21565:25;:29;21591:2;21565:29;;;;;;;;;;;;;;;;;;;;;;;;;21564:30;:83;;;;;21616:25;:31;21642:4;21616:31;;;;;;;;;;;;;;;;;;;;;;;;;21615:32;21564:83;:119;;;;;21682:1;21668:11;;:15;21564:119;21542:227;;;21750:3;21735:11;;21726:6;:20;;;;:::i;:::-;21725:28;;;;:::i;:::-;21718:35;;21542:227;21420:349;21298:471;21796:1;21789:4;:8;21785:122;;;21828:4;21818:14;;;;;:::i;:::-;;;21851:40;21865:4;21879;21886;21851:13;:40::i;:::-;21785:122;21252:666;21239:679;21930:15;21948:24;21966:4;21948:9;:24::i;:::-;21930:42;;21983:15;22012:18;;22001:7;:29;;21983:47;;22045:7;:43;;;;;22057:25;:31;22083:4;22057:31;;;;;;;;;;;;;;;;;;;;;;;;;22056:32;22045:43;:57;;;;;22092:10;22045:57;22041:249;;;22138:26;;22123:12;:41;22119:160;;;22185:18;22195:7;22185:9;:18::i;:::-;22251:12;22222:26;:41;;;;22119:160;22041:249;22302:31;22316:4;22322:2;22326:6;22302:13;:31::i;:::-;18752:3589;;;;;;18633:3708;;;:::o;7931:191::-;8005:16;8024:6;;;;;;;;;;;8005:25;;8050:8;8041:6;;:17;;;;;;;;;;;;;;;;;;8105:8;8074:40;;8095:8;8074:40;;;;;;;;;;;;7994:128;7931:191;:::o;4255:772::-;4395:1;4379:18;;:4;:18;;;4375:373;;4432:5;4416:12;;:21;;;;;;;:::i;:::-;;;;;;;;4375:373;;;4470:19;4492:9;:15;4502:4;4492:15;;;;;;;;;;;;;;;;4470:37;;4540:5;4526:11;:19;4522:117;;;4598:4;4604:11;4617:5;4573:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;4522:117;4716:5;4702:11;:19;4684:9;:15;4694:4;4684:15;;;;;;;;;;;;;;;:37;;;;4455:293;4375:373;4778:1;4764:16;;:2;:16;;;4760:217;;4844:5;4828:12;;:21;;;;;;;;;;;4760:217;;;4945:5;4928:9;:13;4938:2;4928:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;4760:217;5009:2;4994:25;;5003:4;4994:25;;;5013:5;4994:25;;;;;;:::i;:::-;;;;;;;;4255:772;;;:::o;22349:1139::-;11586:4;11573:10;;:17;;;;;;;;;;;;;;;;;;22426:12:::1;22449:21;22487:1;22473:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22449:40;;22518:4;22500;22505:1;22500:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;22544:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22534:4;22539:1;22534:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;22579:21;22624:2;22603:18;;:23;;;;:::i;:::-;22579:47;;22653:13;22643:7;:23;22639:79;;;22693:13;22683:23;;22639:79;22730:15;:66;;;22811:7;22833:1;22849:4;22876;22896:15;22730:192;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22935:18;22956:21;22935:42;;22990:24;23038:4;23031:3;23018:10;:16;;;;:::i;:::-;23017:25;;;;:::i;:::-;22990:52;;23053:19;23096:4;23089:3;23076:10;:16;;;;:::i;:::-;23075:25;;;;:::i;:::-;23053:47;;23111:23;23158:4;23151:3;23138:10;:16;;;;:::i;:::-;23137:25;;;;:::i;:::-;23111:51;;23197:16;;;;;;;;;;;23189:30;;23227:16;23189:83;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23175:97;;;;;23307:11;;;;;;;;;;;23299:25;;23332:11;23299:73;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23285:87;;;;;23407:15;;;;;;;;;;;23399:29;;23436:15;23399:81;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23385:95;;;;;22415:1073;;;;;;;11626:5:::0;11613:10;;:18;;;;;;;;;;;;;;;;;;22349:1139;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:117::-;3448:1;3445;3438:12;3462:117;3571:1;3568;3561:12;3585:117;3694:1;3691;3684:12;3725:568;3798:8;3808:6;3858:3;3851:4;3843:6;3839:17;3835:27;3825:122;;3866:79;;:::i;:::-;3825:122;3979:6;3966:20;3956:30;;4009:18;4001:6;3998:30;3995:117;;;4031:79;;:::i;:::-;3995:117;4145:4;4137:6;4133:17;4121:29;;4199:3;4191:4;4183:6;4179:17;4169:8;4165:32;4162:41;4159:128;;;4206:79;;:::i;:::-;4159:128;3725:568;;;;;:::o;4299:116::-;4369:21;4384:5;4369:21;:::i;:::-;4362:5;4359:32;4349:60;;4405:1;4402;4395:12;4349:60;4299:116;:::o;4421:133::-;4464:5;4502:6;4489:20;4480:29;;4518:30;4542:5;4518:30;:::i;:::-;4421:133;;;;:::o;4560:698::-;4652:6;4660;4668;4717:2;4705:9;4696:7;4692:23;4688:32;4685:119;;;4723:79;;:::i;:::-;4685:119;4871:1;4860:9;4856:17;4843:31;4901:18;4893:6;4890:30;4887:117;;;4923:79;;:::i;:::-;4887:117;5036:80;5108:7;5099:6;5088:9;5084:22;5036:80;:::i;:::-;5018:98;;;;4814:312;5165:2;5191:50;5233:7;5224:6;5213:9;5209:22;5191:50;:::i;:::-;5181:60;;5136:115;4560:698;;;;;:::o;5264:60::-;5292:3;5313:5;5306:12;;5264:60;;;:::o;5330:142::-;5380:9;5413:53;5431:34;5440:24;5458:5;5440:24;:::i;:::-;5431:34;:::i;:::-;5413:53;:::i;:::-;5400:66;;5330:142;;;:::o;5478:126::-;5528:9;5561:37;5592:5;5561:37;:::i;:::-;5548:50;;5478:126;;;:::o;5610:150::-;5684:9;5717:37;5748:5;5717:37;:::i;:::-;5704:50;;5610:150;;;:::o;5766:179::-;5877:61;5932:5;5877:61;:::i;:::-;5872:3;5865:74;5766:179;;:::o;5951:270::-;6068:4;6106:2;6095:9;6091:18;6083:26;;6119:95;6211:1;6200:9;6196:17;6187:6;6119:95;:::i;:::-;5951:270;;;;:::o;6227:118::-;6314:24;6332:5;6314:24;:::i;:::-;6309:3;6302:37;6227:118;;:::o;6351:222::-;6444:4;6482:2;6471:9;6467:18;6459:26;;6495:71;6563:1;6552:9;6548:17;6539:6;6495:71;:::i;:::-;6351:222;;;;:::o;6579:619::-;6656:6;6664;6672;6721:2;6709:9;6700:7;6696:23;6692:32;6689:119;;;6727:79;;:::i;:::-;6689:119;6847:1;6872:53;6917:7;6908:6;6897:9;6893:22;6872:53;:::i;:::-;6862:63;;6818:117;6974:2;7000:53;7045:7;7036:6;7025:9;7021:22;7000:53;:::i;:::-;6990:63;;6945:118;7102:2;7128:53;7173:7;7164:6;7153:9;7149:22;7128:53;:::i;:::-;7118:63;;7073:118;6579:619;;;;;:::o;7204:86::-;7239:7;7279:4;7272:5;7268:16;7257:27;;7204:86;;;:::o;7296:112::-;7379:22;7395:5;7379:22;:::i;:::-;7374:3;7367:35;7296:112;;:::o;7414:214::-;7503:4;7541:2;7530:9;7526:18;7518:26;;7554:67;7618:1;7607:9;7603:17;7594:6;7554:67;:::i;:::-;7414:214;;;;:::o;7634:118::-;7721:24;7739:5;7721:24;:::i;:::-;7716:3;7709:37;7634:118;;:::o;7758:222::-;7851:4;7889:2;7878:9;7874:18;7866:26;;7902:71;7970:1;7959:9;7955:17;7946:6;7902:71;:::i;:::-;7758:222;;;;:::o;7986:329::-;8045:6;8094:2;8082:9;8073:7;8069:23;8065:32;8062:119;;;8100:79;;:::i;:::-;8062:119;8220:1;8245:53;8290:7;8281:6;8270:9;8266:22;8245:53;:::i;:::-;8235:63;;8191:117;7986:329;;;;:::o;8321:::-;8380:6;8429:2;8417:9;8408:7;8404:23;8400:32;8397:119;;;8435:79;;:::i;:::-;8397:119;8555:1;8580:53;8625:7;8616:6;8605:9;8601:22;8580:53;:::i;:::-;8570:63;;8526:117;8321:329;;;;:::o;8656:474::-;8724:6;8732;8781:2;8769:9;8760:7;8756:23;8752:32;8749:119;;;8787:79;;:::i;:::-;8749:119;8907:1;8932:53;8977:7;8968:6;8957:9;8953:22;8932:53;:::i;:::-;8922:63;;8878:117;9034:2;9060:53;9105:7;9096:6;9085:9;9081:22;9060:53;:::i;:::-;9050:63;;9005:118;8656:474;;;;;:::o;9136:323::-;9192:6;9241:2;9229:9;9220:7;9216:23;9212:32;9209:119;;;9247:79;;:::i;:::-;9209:119;9367:1;9392:50;9434:7;9425:6;9414:9;9410:22;9392:50;:::i;:::-;9382:60;;9338:114;9136:323;;;;:::o;9465:180::-;9513:77;9510:1;9503:88;9610:4;9607:1;9600:15;9634:4;9631:1;9624:15;9651:320;9695:6;9732:1;9726:4;9722:12;9712:22;;9779:1;9773:4;9769:12;9800:18;9790:81;;9856:4;9848:6;9844:17;9834:27;;9790:81;9918:2;9910:6;9907:14;9887:18;9884:38;9881:84;;9937:18;;:::i;:::-;9881:84;9702:269;9651:320;;;:::o;9977:180::-;10025:77;10022:1;10015:88;10122:4;10119:1;10112:15;10146:4;10143:1;10136:15;10163:143;10220:5;10251:6;10245:13;10236:22;;10267:33;10294:5;10267:33;:::i;:::-;10163:143;;;;:::o;10312:351::-;10382:6;10431:2;10419:9;10410:7;10406:23;10402:32;10399:119;;;10437:79;;:::i;:::-;10399:119;10557:1;10582:64;10638:7;10629:6;10618:9;10614:22;10582:64;:::i;:::-;10572:74;;10528:128;10312:351;;;;:::o;10669:332::-;10790:4;10828:2;10817:9;10813:18;10805:26;;10841:71;10909:1;10898:9;10894:17;10885:6;10841:71;:::i;:::-;10922:72;10990:2;10979:9;10975:18;10966:6;10922:72;:::i;:::-;10669:332;;;;;:::o;11007:85::-;11052:7;11081:5;11070:16;;11007:85;;;:::o;11098:158::-;11156:9;11189:61;11207:42;11216:32;11242:5;11216:32;:::i;:::-;11207:42;:::i;:::-;11189:61;:::i;:::-;11176:74;;11098:158;;;:::o;11262:147::-;11357:45;11396:5;11357:45;:::i;:::-;11352:3;11345:58;11262:147;;:::o;11415:807::-;11664:4;11702:3;11691:9;11687:19;11679:27;;11716:71;11784:1;11773:9;11769:17;11760:6;11716:71;:::i;:::-;11797:72;11865:2;11854:9;11850:18;11841:6;11797:72;:::i;:::-;11879:80;11955:2;11944:9;11940:18;11931:6;11879:80;:::i;:::-;11969;12045:2;12034:9;12030:18;12021:6;11969:80;:::i;:::-;12059:73;12127:3;12116:9;12112:19;12103:6;12059:73;:::i;:::-;12142;12210:3;12199:9;12195:19;12186:6;12142:73;:::i;:::-;11415:807;;;;;;;;;:::o;12228:143::-;12285:5;12316:6;12310:13;12301:22;;12332:33;12359:5;12332:33;:::i;:::-;12228:143;;;;:::o;12377:663::-;12465:6;12473;12481;12530:2;12518:9;12509:7;12505:23;12501:32;12498:119;;;12536:79;;:::i;:::-;12498:119;12656:1;12681:64;12737:7;12728:6;12717:9;12713:22;12681:64;:::i;:::-;12671:74;;12627:128;12794:2;12820:64;12876:7;12867:6;12856:9;12852:22;12820:64;:::i;:::-;12810:74;;12765:129;12933:2;12959:64;13015:7;13006:6;12995:9;12991:22;12959:64;:::i;:::-;12949:74;;12904:129;12377:663;;;;;:::o;13046:332::-;13167:4;13205:2;13194:9;13190:18;13182:26;;13218:71;13286:1;13275:9;13271:17;13262:6;13218:71;:::i;:::-;13299:72;13367:2;13356:9;13352:18;13343:6;13299:72;:::i;:::-;13046:332;;;;;:::o;13384:137::-;13438:5;13469:6;13463:13;13454:22;;13485:30;13509:5;13485:30;:::i;:::-;13384:137;;;;:::o;13527:345::-;13594:6;13643:2;13631:9;13622:7;13618:23;13614:32;13611:119;;;13649:79;;:::i;:::-;13611:119;13769:1;13794:61;13847:7;13838:6;13827:9;13823:22;13794:61;:::i;:::-;13784:71;;13740:125;13527:345;;;;:::o;13878:166::-;14018:18;14014:1;14006:6;14002:14;13995:42;13878:166;:::o;14050:366::-;14192:3;14213:67;14277:2;14272:3;14213:67;:::i;:::-;14206:74;;14289:93;14378:3;14289:93;:::i;:::-;14407:2;14402:3;14398:12;14391:19;;14050:366;;;:::o;14422:419::-;14588:4;14626:2;14615:9;14611:18;14603:26;;14675:9;14669:4;14665:20;14661:1;14650:9;14646:17;14639:47;14703:131;14829:4;14703:131;:::i;:::-;14695:139;;14422:419;;;:::o;14847:332::-;14968:4;15006:2;14995:9;14991:18;14983:26;;15019:71;15087:1;15076:9;15072:17;15063:6;15019:71;:::i;:::-;15100:72;15168:2;15157:9;15153:18;15144:6;15100:72;:::i;:::-;14847:332;;;;;:::o;15185:173::-;15325:25;15321:1;15313:6;15309:14;15302:49;15185:173;:::o;15364:366::-;15506:3;15527:67;15591:2;15586:3;15527:67;:::i;:::-;15520:74;;15603:93;15692:3;15603:93;:::i;:::-;15721:2;15716:3;15712:12;15705:19;;15364:366;;;:::o;15736:419::-;15902:4;15940:2;15929:9;15925:18;15917:26;;15989:9;15983:4;15979:20;15975:1;15964:9;15960:17;15953:47;16017:131;16143:4;16017:131;:::i;:::-;16009:139;;15736:419;;;:::o;16161:180::-;16209:77;16206:1;16199:88;16306:4;16303:1;16296:15;16330:4;16327:1;16320:15;16347:410;16387:7;16410:20;16428:1;16410:20;:::i;:::-;16405:25;;16444:20;16462:1;16444:20;:::i;:::-;16439:25;;16499:1;16496;16492:9;16521:30;16539:11;16521:30;:::i;:::-;16510:41;;16700:1;16691:7;16687:15;16684:1;16681:22;16661:1;16654:9;16634:83;16611:139;;16730:18;;:::i;:::-;16611:139;16395:362;16347:410;;;;:::o;16763:180::-;16811:77;16808:1;16801:88;16908:4;16905:1;16898:15;16932:4;16929:1;16922:15;16949:185;16989:1;17006:20;17024:1;17006:20;:::i;:::-;17001:25;;17040:20;17058:1;17040:20;:::i;:::-;17035:25;;17079:1;17069:35;;17084:18;;:::i;:::-;17069:35;17126:1;17123;17119:9;17114:14;;16949:185;;;;:::o;17140:147::-;17241:11;17278:3;17263:18;;17140:147;;;;:::o;17293:114::-;;:::o;17413:398::-;17572:3;17593:83;17674:1;17669:3;17593:83;:::i;:::-;17586:90;;17685:93;17774:3;17685:93;:::i;:::-;17803:1;17798:3;17794:11;17787:18;;17413:398;;;:::o;17817:379::-;18001:3;18023:147;18166:3;18023:147;:::i;:::-;18016:154;;18187:3;18180:10;;17817:379;;;:::o;18202:351::-;18272:6;18321:2;18309:9;18300:7;18296:23;18292:32;18289:119;;;18327:79;;:::i;:::-;18289:119;18447:1;18472:64;18528:7;18519:6;18508:9;18504:22;18472:64;:::i;:::-;18462:74;;18418:128;18202:351;;;;:::o;18559:320::-;18674:4;18712:2;18701:9;18697:18;18689:26;;18725:71;18793:1;18782:9;18778:17;18769:6;18725:71;:::i;:::-;18806:66;18868:2;18857:9;18853:18;18844:6;18806:66;:::i;:::-;18559:320;;;;;:::o;18885:442::-;19034:4;19072:2;19061:9;19057:18;19049:26;;19085:71;19153:1;19142:9;19138:17;19129:6;19085:71;:::i;:::-;19166:72;19234:2;19223:9;19219:18;19210:6;19166:72;:::i;:::-;19248;19316:2;19305:9;19301:18;19292:6;19248:72;:::i;:::-;18885:442;;;;;;:::o;19333:194::-;19373:4;19393:20;19411:1;19393:20;:::i;:::-;19388:25;;19427:20;19445:1;19427:20;:::i;:::-;19422:25;;19471:1;19468;19464:9;19456:17;;19495:1;19489:4;19486:11;19483:37;;;19500:18;;:::i;:::-;19483:37;19333:194;;;;:::o;19533:191::-;19573:3;19592:20;19610:1;19592:20;:::i;:::-;19587:25;;19626:20;19644:1;19626:20;:::i;:::-;19621:25;;19669:1;19666;19662:9;19655:16;;19690:3;19687:1;19684:10;19681:36;;;19697:18;;:::i;:::-;19681:36;19533:191;;;;:::o;19730:180::-;19778:77;19775:1;19768:88;19875:4;19872:1;19865:15;19899:4;19896:1;19889:15;19916:114;19983:6;20017:5;20011:12;20001:22;;19916:114;;;:::o;20036:184::-;20135:11;20169:6;20164:3;20157:19;20209:4;20204:3;20200:14;20185:29;;20036:184;;;;:::o;20226:132::-;20293:4;20316:3;20308:11;;20346:4;20341:3;20337:14;20329:22;;20226:132;;;:::o;20364:108::-;20441:24;20459:5;20441:24;:::i;:::-;20436:3;20429:37;20364:108;;:::o;20478:179::-;20547:10;20568:46;20610:3;20602:6;20568:46;:::i;:::-;20646:4;20641:3;20637:14;20623:28;;20478:179;;;;:::o;20663:113::-;20733:4;20765;20760:3;20756:14;20748:22;;20663:113;;;:::o;20812:732::-;20931:3;20960:54;21008:5;20960:54;:::i;:::-;21030:86;21109:6;21104:3;21030:86;:::i;:::-;21023:93;;21140:56;21190:5;21140:56;:::i;:::-;21219:7;21250:1;21235:284;21260:6;21257:1;21254:13;21235:284;;;21336:6;21330:13;21363:63;21422:3;21407:13;21363:63;:::i;:::-;21356:70;;21449:60;21502:6;21449:60;:::i;:::-;21439:70;;21295:224;21282:1;21279;21275:9;21270:14;;21235:284;;;21239:14;21535:3;21528:10;;20936:608;;;20812:732;;;;:::o;21550:831::-;21813:4;21851:3;21840:9;21836:19;21828:27;;21865:71;21933:1;21922:9;21918:17;21909:6;21865:71;:::i;:::-;21946:80;22022:2;22011:9;22007:18;21998:6;21946:80;:::i;:::-;22073:9;22067:4;22063:20;22058:2;22047:9;22043:18;22036:48;22101:108;22204:4;22195:6;22101:108;:::i;:::-;22093:116;;22219:72;22287:2;22276:9;22272:18;22263:6;22219:72;:::i;:::-;22301:73;22369:3;22358:9;22354:19;22345:6;22301:73;:::i;:::-;21550:831;;;;;;;;:::o

Swarm Source

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