ETH Price: $3,056.28 (+1.36%)
Gas: 3 Gwei

Token

BullDogeAI (BDA)
 

Overview

Max Total Supply

100,000,000 BDA

Holders

49

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000090149 BDA

Value
$0.00
0xaabea6705eea315f788aac9df05ba46ca9a9071c
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:
BullDogeAIToken

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*
    website  :    https://bulldogeai.com/
    telegram :    https://t.me/BullDogeAI_Portal
    twitter  :    https://twitter.com/BullDogeAI
    discord  :    https://discord.com/invite/SZybuMY5ke
*/
pragma solidity 0.8.17;

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

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

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

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

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

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, 'ERC20: transfer amount exceeds allowance');
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

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

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), 'ERC20: burn from the zero address');

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, 'ERC20: burn amount exceeds balance');
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

contract Treasury {
    IUniswapV2Router02 public dexRouter;
    address public marketingWallet;
    IERC20 public token;

    event NewMarketingWallet(address _newAddress);

    constructor(
        address _router,
        address _marketing,
        address _token
    ) {
        dexRouter = IUniswapV2Router02(_router);
        marketingWallet = _marketing;
        token = IERC20(_token);
    }

    function setMarketingWallet(address _address) public {
        require(msg.sender == marketingWallet, 'only accept by marketing wallet');
        marketingWallet = _address;
        emit NewMarketingWallet(_address);
    }

    function swap() public {
        address[] memory path = new address[](2);
        path[0] = address(token);
        path[1] = dexRouter.WETH();

        uint256 balance = token.balanceOf(address(this));

        if (balance > 0) {
            token.approve(address(dexRouter), balance);
            dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
                balance,
                0,
                path,
                marketingWallet,
                block.timestamp
            );
        }
    }
}

contract BullDogeAIToken is ERC20, Ownable {
    uint256 public taxFee = 2;

    IUniswapV2Router02 public uniswapV2Router;
    Treasury public treasury;
    address public uniswapV2Pair;

    uint256 public swapTokensAtAmount;
    bool public swapEnabled = true;
    bool public swapWithLimit;
    bool private swapping;
    uint256 private launchTime;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private automatedMarketMakerPairs;

    event SwapEnabledUpdated(bool enabled);
    event SwapWithLimitUpdated(bool amount);
    event TreasuryChanged(address treasury);
    event SwapTokensAtAmountUpdated(uint256 amount);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity);

    constructor() ERC20("BullDogeAI", "BDA") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
            address(this),
            _uniswapV2Router.WETH()
        );

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;

        treasury = new Treasury(address(uniswapV2Router), _msgSender(), address(this));

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);

        _isExcludedFromFees[address(treasury)] = true;
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;

        _mint(owner(), 100_000_000 * 10**decimals());
        swapTokensAtAmount = 3000 * 10**decimals();
    }

    receive() external payable {}

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(automatedMarketMakerPairs[pair] != value, 'Automated market maker pair is already set to that value');
        automatedMarketMakerPairs[pair] = value;
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner {
        require(_isExcludedFromFees[account] != excluded, "Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), 'ERC20: transfer from the zero address');
        require(to != address(0), 'ERC20: transfer to the zero address');

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (to == uniswapV2Pair && launchTime == 0 && amount > 0) {
            launchTime = block.timestamp;
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            if (swapWithLimit) {
                contractTokenBalance = swapTokensAtAmount;
            }

            swapAndLiquify(contractTokenBalance);

            try treasury.swap() {} catch {}

            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        if (from != uniswapV2Pair && to != uniswapV2Pair) {
            takeFee = false;
        }

        if (takeFee) {
            uint256 fees = (amount * taxFee) / 100;
            if (isBot(from, to)) {
                fees = (amount * 45) / 100;
            }

            amount = amount - fees;

            if (from == uniswapV2Pair) {
                super._transfer(from, address(this), fees);
            } else {
                super._transfer(from, address(treasury), fees);
            }
        }

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

    function setSwapEnabled(bool _swapEnabled) external onlyOwner {
        require(swapEnabled != _swapEnabled, 'Swap is already set to that state');
        swapEnabled = _swapEnabled;
        emit SwapEnabledUpdated(_swapEnabled);
    }

    function setTreasury(address _treasury) external onlyOwner {
        require(_treasury != address(treasury), 'Treasury is already set to that address');
        require(_treasury != address(0), 'Treasury can not be the zero address');
        treasury = Treasury(_treasury);
        _isExcludedFromFees[_treasury] = true;
        emit TreasuryChanged(_treasury);
    }

    function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(newAmount != swapTokensAtAmount, 'Swap tokens at amount is already set to that amount');
        swapTokensAtAmount = newAmount;
        emit SwapTokensAtAmountUpdated(newAmount);
    }

    function setSwapWithLimitStatus(bool _swapWithLimit) external onlyOwner {
        require(swapWithLimit != _swapWithLimit, 'Swap with limit is already set to that state');
        swapWithLimit = _swapWithLimit;
        emit SwapWithLimitUpdated(_swapWithLimit);
    }

    function isBot(address from, address to) private view returns (bool) {
        return block.timestamp - launchTime < 10 && launchTime != 0 && (uniswapV2Pair == to || uniswapV2Pair == from);
    }

    function swapAndLiquify(uint256 tokens) private {
        uint256 half = tokens / 2;
        uint256 otherHalf = tokens - half;

        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uint256 newBalance = address(this).balance - initialBalance;

        uniswapV2Router.addLiquidityETH{ value: newBalance }(address(this), otherHalf, 0, 0, owner(), block.timestamp);

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), 'Cannot claim native tokens');
        if (token == address(0x0)) {
            payable(msg.sender).transfer(address(this).balance);
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.transfer(msg.sender, balance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"amount","type":"bool"}],"name":"SwapWithLimitUpdated","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":"treasury","type":"address"}],"name":"TreasuryChanged","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapWithLimit","type":"bool"}],"name":"setSwapWithLimitStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapWithLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"contract Treasury","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260026006556001600b60006101000a81548160ff0219169083151502179055503480156200003157600080fd5b506040518060400160405280600a81526020017f42756c6c446f67654149000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f42444100000000000000000000000000000000000000000000000000000000008152508160039081620000af919062000d58565b508060049081620000c1919062000d58565b5050506000620000d66200065260201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000202919062000ea9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000ea9565b6040518363ffffffff1660e01b8152600401620002af92919062000eec565b6020604051808303816000875af1158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f5919062000ea9565b905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620003ac6200065260201b60201c565b30604051620003bb9062000ad0565b620003c99392919062000f19565b604051809103906000f080158015620003e6573d6000803e3d6000fd5b50600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200047c30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200065a60201b60201c565b6200048f8160016200082b60201b60201c565b6001600d6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60006200051f6200091b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000617620005dc6200091b60201b60201c565b620005ec6200094560201b60201c565b600a620005fa9190620010e6565b6305f5e1006200060b919062001137565b6200094e60201b60201c565b620006276200094560201b60201c565b600a620006359190620010e6565b610bb862000644919062001137565b600a81905550505062001436565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620006cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006c39062001209565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200073e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200073590620012a1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200081e9190620012d4565b60405180910390a3505050565b801515600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503620008c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008b79062001367565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009b790620013d9565b60405180910390fd5b620009d46000838362000ac660201b60201c565b8060026000828254620009e89190620013fb565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a3f9190620013fb565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000aa69190620012d4565b60405180910390a362000ac26000838362000acb60201b60201c565b5050565b505050565b505050565b610cef8062004e6083390190565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b6057607f821691505b60208210810362000b765762000b7562000b18565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000be07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ba1565b62000bec868362000ba1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c3962000c3362000c2d8462000c04565b62000c0e565b62000c04565b9050919050565b6000819050919050565b62000c558362000c18565b62000c6d62000c648262000c40565b84845462000bae565b825550505050565b600090565b62000c8462000c75565b62000c9181848462000c4a565b505050565b5b8181101562000cb95762000cad60008262000c7a565b60018101905062000c97565b5050565b601f82111562000d085762000cd28162000b7c565b62000cdd8462000b91565b8101602085101562000ced578190505b62000d0562000cfc8562000b91565b83018262000c96565b50505b505050565b600082821c905092915050565b600062000d2d6000198460080262000d0d565b1980831691505092915050565b600062000d48838362000d1a565b9150826002028217905092915050565b62000d638262000ade565b67ffffffffffffffff81111562000d7f5762000d7e62000ae9565b5b62000d8b825462000b47565b62000d9882828562000cbd565b600060209050601f83116001811462000dd0576000841562000dbb578287015190505b62000dc7858262000d3a565b86555062000e37565b601f19841662000de08662000b7c565b60005b8281101562000e0a5784890151825560018201915060208501945060208101905062000de3565b8683101562000e2a578489015162000e26601f89168262000d1a565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e718262000e44565b9050919050565b62000e838162000e64565b811462000e8f57600080fd5b50565b60008151905062000ea38162000e78565b92915050565b60006020828403121562000ec25762000ec162000e3f565b5b600062000ed28482850162000e92565b91505092915050565b62000ee68162000e64565b82525050565b600060408201905062000f03600083018562000edb565b62000f12602083018462000edb565b9392505050565b600060608201905062000f30600083018662000edb565b62000f3f602083018562000edb565b62000f4e604083018462000edb565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000fe45780860481111562000fbc5762000fbb62000f56565b5b600185161562000fcc5780820291505b808102905062000fdc8562000f85565b945062000f9c565b94509492505050565b60008262000fff5760019050620010d2565b816200100f5760009050620010d2565b8160018114620010285760028114620010335762001069565b6001915050620010d2565b60ff84111562001048576200104762000f56565b5b8360020a91508482111562001062576200106162000f56565b5b50620010d2565b5060208310610133831016604e8410600b8410161715620010a35782820a9050838111156200109d576200109c62000f56565b5b620010d2565b620010b2848484600162000f92565b92509050818404811115620010cc57620010cb62000f56565b5b81810290505b9392505050565b600060ff82169050919050565b6000620010f38262000c04565b91506200110083620010d9565b92506200112f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000fed565b905092915050565b6000620011448262000c04565b9150620011518362000c04565b9250828202620011618162000c04565b915082820484148315176200117b576200117a62000f56565b5b5092915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620011f160248362001182565b9150620011fe8262001193565b604082019050919050565b600060208201905081810360008301526200122481620011e2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200128960228362001182565b915062001296826200122b565b604082019050919050565b60006020820190508181036000830152620012bc816200127a565b9050919050565b620012ce8162000c04565b82525050565b6000602082019050620012eb6000830184620012c3565b92915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b60006200134f60388362001182565b91506200135c82620012f1565b604082019050919050565b60006020820190508181036000830152620013828162001340565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620013c1601f8362001182565b9150620013ce8262001389565b602082019050919050565b60006020820190508181036000830152620013f481620013b2565b9050919050565b6000620014088262000c04565b9150620014158362000c04565b925082820190508082111562001430576200142f62000f56565b5b92915050565b613a1a80620014466000396000f3fe6080604052600436106101a05760003560e01c80638da5cb5b116100ec578063dd62ed3e1161008a578063f0f4426011610064578063f0f44260146105ed578063f2fde38b14610616578063f9d0831a1461063f578063fc35714214610668576101a7565b8063dd62ed3e1461055c578063e01af92c14610599578063e2f45605146105c2576101a7565b8063a457c2d7116100c6578063a457c2d714610490578063a9059cbb146104cd578063afa4f3b21461050a578063c024666814610533576101a7565b80638da5cb5b1461040f57806395d89b411461043a578063a071dcf414610465576101a7565b8063395093511161015957806361d027b31161013357806361d027b3146103655780636ddd17131461039057806370a08231146103bb578063715018a6146103f8576101a7565b806339509351146102d2578063488eb37f1461030f57806349bd5a5e1461033a576101a7565b806306fdde03146101ac578063095ea7b3146101d75780631694505e1461021457806318160ddd1461023f57806323b872dd1461026a578063313ce567146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610691565b6040516101ce91906127f4565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f991906128af565b610723565b60405161020b919061290a565b60405180910390f35b34801561022057600080fd5b50610229610741565b6040516102369190612984565b60405180910390f35b34801561024b57600080fd5b50610254610767565b60405161026191906129ae565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c91906129c9565b610771565b60405161029e919061290a565b60405180910390f35b3480156102b357600080fd5b506102bc610890565b6040516102c99190612a38565b60405180910390f35b3480156102de57600080fd5b506102f960048036038101906102f491906128af565b610899565b604051610306919061290a565b60405180910390f35b34801561031b57600080fd5b50610324610945565b604051610331919061290a565b60405180910390f35b34801561034657600080fd5b5061034f610958565b60405161035c9190612a62565b60405180910390f35b34801561037157600080fd5b5061037a61097e565b6040516103879190612a9e565b60405180910390f35b34801561039c57600080fd5b506103a56109a4565b6040516103b2919061290a565b60405180910390f35b3480156103c757600080fd5b506103e260048036038101906103dd9190612ab9565b6109b7565b6040516103ef91906129ae565b60405180910390f35b34801561040457600080fd5b5061040d6109ff565b005b34801561041b57600080fd5b50610424610b57565b6040516104319190612a62565b60405180910390f35b34801561044657600080fd5b5061044f610b81565b60405161045c91906127f4565b60405180910390f35b34801561047157600080fd5b5061047a610c13565b60405161048791906129ae565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b291906128af565b610c19565b6040516104c4919061290a565b60405180910390f35b3480156104d957600080fd5b506104f460048036038101906104ef91906128af565b610d04565b604051610501919061290a565b60405180910390f35b34801561051657600080fd5b50610531600480360381019061052c9190612ae6565b610d22565b005b34801561053f57600080fd5b5061055a60048036038101906105559190612b3f565b610e3e565b005b34801561056857600080fd5b50610583600480360381019061057e9190612b7f565b610fc2565b60405161059091906129ae565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb9190612bbf565b611049565b005b3480156105ce57600080fd5b506105d7611189565b6040516105e491906129ae565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190612ab9565b61118f565b005b34801561062257600080fd5b5061063d60048036038101906106389190612ab9565b6113f8565b005b34801561064b57600080fd5b5061066660048036038101906106619190612ab9565b6115be565b005b34801561067457600080fd5b5061068f600480360381019061068a9190612bbf565b61184b565b005b6060600380546106a090612c1b565b80601f01602080910402602001604051908101604052809291908181526020018280546106cc90612c1b565b80156107195780601f106106ee57610100808354040283529160200191610719565b820191906000526020600020905b8154815290600101906020018083116106fc57829003601f168201915b5050505050905090565b600061073761073061198b565b8484611993565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107bd61198b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108795782811015610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b90612cbe565b60405180910390fd5b6108788561087061198b565b858403611993565b5b610884858585611b5c565b60019150509392505050565b60006012905090565b600061093b6108a661198b565b8484600160006108b461198b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109369190612d0d565b611993565b6001905092915050565b600b60019054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a0761198b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8d90612d8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b9090612c1b565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbc90612c1b565b8015610c095780601f10610bde57610100808354040283529160200191610c09565b820191906000526020600020905b815481529060010190602001808311610bec57829003601f168201915b5050505050905090565b60065481565b60008060016000610c2861198b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdc90612e1f565b60405180910390fd5b610cf9610cf061198b565b85858403611993565b600191505092915050565b6000610d18610d1161198b565b8484611b5c565b6001905092915050565b610d2a61198b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db090612d8d565b60405180910390fd5b600a548103610dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df490612eb1565b60405180910390fd5b80600a819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b14581604051610e3391906129ae565b60405180910390a150565b610e4661198b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecc90612d8d565b60405180910390fd5b801515600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5e90612f43565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61105161198b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d790612d8d565b60405180910390fd5b801515600b60009054906101000a900460ff16151503611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c90612fd5565b60405180910390fd5b80600b60006101000a81548160ff0219169083151502179055507f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a128160405161117e919061290a565b60405180910390a150565b600a5481565b61119761198b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90612d8d565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad90613067565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131c906130f9565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fc714d22a2f08b695f81e7c707058db484aa5b4d6b4c9fd64beb10fe85832f608816040516113ed9190612a62565b60405180910390a150565b61140061198b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461148f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148690612d8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f59061318b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6115c661198b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164c90612d8d565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ba906131f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611743573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561173d573d6000803e3d6000fd5b50611848565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117839190612a62565b602060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061322c565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611801929190613259565b6020604051808303816000875af1158015611820573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118449190613297565b5050505b50565b61185361198b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d990612d8d565b60405180910390fd5b801515600b60019054906101000a900460ff16151503611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90613336565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055507f94da5f18dc9529c37f2af4ffa1921f49d8bb14b6e5fe22b0d6ddc94f102f923281604051611980919061290a565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f9906133c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a689061345a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b4f91906129ae565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc2906134ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c319061357e565b60405180910390fd5b60008103611c5357611c4e838360006120c1565b6120bc565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611cb257506000600c54145b8015611cbe5750600081115b15611ccb5742600c819055505b6000611cd6306109b7565b90506000600a548210159050600b60009054906101000a900460ff168015611cfb5750805b8015611d145750600b60029054906101000a900460ff16155b8015611d695750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e45576001600b60026101000a81548160ff021916908315150217905550600b60019054906101000a900460ff1615611da457600a5491505b611dad82612340565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638119c0656040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e1757600080fd5b505af1925050508015611e28575060015b506000600b60026101000a81548160ff0219169083151502179055505b6000600b60029054906101000a900460ff16159050600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611efb5750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611f0557600090505b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015611fb15750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611fbb57600090505b80156120ad576000606460065486611fd3919061359e565b611fdd919061360f565b9050611fe9878761267f565b1561200a576064602d86611ffd919061359e565b612007919061360f565b90505b80856120169190613640565b9450600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361207d576120788730836120c1565b6120ab565b6120aa87600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836120c1565b5b505b6120b88686866120c1565b5050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612130576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612127906134ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361219f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121969061357e565b60405180910390fd5b6121aa83838361275a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612230576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612227906136e6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122c39190612d0d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161232791906129ae565b60405180910390a361233a84848461275f565b50505050565b600060028261234f919061360f565b90506000818361235f9190613640565b905060004790506000600267ffffffffffffffff81111561238357612382613706565b5b6040519080825280602002602001820160405280156123b15781602001602082028036833780820191505090505b50905030816000815181106123c9576123c8613735565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612470573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124949190613779565b816001815181106124a8576124a7613735565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b815260040161254695949392919061389f565b600060405180830381600087803b15801561256057600080fd5b505af1158015612574573d6000803e3d6000fd5b50505050600082476125869190613640565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230876000806125d4610b57565b426040518863ffffffff1660e01b81526004016125f6969594939291906138f9565b60606040518083038185885af1158015612614573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612639919061395a565b5050507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185828660405161266f939291906139ad565b60405180910390a1505050505050565b6000600a600c54426126919190613640565b1080156126a157506000600c5414155b801561275257508173ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061275157508273ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561279e578082015181840152602081019050612783565b60008484015250505050565b6000601f19601f8301169050919050565b60006127c682612764565b6127d0818561276f565b93506127e0818560208601612780565b6127e9816127aa565b840191505092915050565b6000602082019050818103600083015261280e81846127bb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128468261281b565b9050919050565b6128568161283b565b811461286157600080fd5b50565b6000813590506128738161284d565b92915050565b6000819050919050565b61288c81612879565b811461289757600080fd5b50565b6000813590506128a981612883565b92915050565b600080604083850312156128c6576128c5612816565b5b60006128d485828601612864565b92505060206128e58582860161289a565b9150509250929050565b60008115159050919050565b612904816128ef565b82525050565b600060208201905061291f60008301846128fb565b92915050565b6000819050919050565b600061294a6129456129408461281b565b612925565b61281b565b9050919050565b600061295c8261292f565b9050919050565b600061296e82612951565b9050919050565b61297e81612963565b82525050565b60006020820190506129996000830184612975565b92915050565b6129a881612879565b82525050565b60006020820190506129c3600083018461299f565b92915050565b6000806000606084860312156129e2576129e1612816565b5b60006129f086828701612864565b9350506020612a0186828701612864565b9250506040612a128682870161289a565b9150509250925092565b600060ff82169050919050565b612a3281612a1c565b82525050565b6000602082019050612a4d6000830184612a29565b92915050565b612a5c8161283b565b82525050565b6000602082019050612a776000830184612a53565b92915050565b6000612a8882612951565b9050919050565b612a9881612a7d565b82525050565b6000602082019050612ab36000830184612a8f565b92915050565b600060208284031215612acf57612ace612816565b5b6000612add84828501612864565b91505092915050565b600060208284031215612afc57612afb612816565b5b6000612b0a8482850161289a565b91505092915050565b612b1c816128ef565b8114612b2757600080fd5b50565b600081359050612b3981612b13565b92915050565b60008060408385031215612b5657612b55612816565b5b6000612b6485828601612864565b9250506020612b7585828601612b2a565b9150509250929050565b60008060408385031215612b9657612b95612816565b5b6000612ba485828601612864565b9250506020612bb585828601612864565b9150509250929050565b600060208284031215612bd557612bd4612816565b5b6000612be384828501612b2a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c3357607f821691505b602082108103612c4657612c45612bec565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612ca860288361276f565b9150612cb382612c4c565b604082019050919050565b60006020820190508181036000830152612cd781612c9b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d1882612879565b9150612d2383612879565b9250828201905080821115612d3b57612d3a612cde565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d7760208361276f565b9150612d8282612d41565b602082019050919050565b60006020820190508181036000830152612da681612d6a565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612e0960258361276f565b9150612e1482612dad565b604082019050919050565b60006020820190508181036000830152612e3881612dfc565b9050919050565b7f5377617020746f6b656e7320617420616d6f756e7420697320616c726561647960008201527f2073657420746f207468617420616d6f756e7400000000000000000000000000602082015250565b6000612e9b60338361276f565b9150612ea682612e3f565b604082019050919050565b60006020820190508181036000830152612eca81612e8e565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000612f2d602a8361276f565b9150612f3882612ed1565b604082019050919050565b60006020820190508181036000830152612f5c81612f20565b9050919050565b7f5377617020697320616c72656164792073657420746f2074686174207374617460008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fbf60218361276f565b9150612fca82612f63565b604082019050919050565b60006020820190508181036000830152612fee81612fb2565b9050919050565b7f547265617375727920697320616c72656164792073657420746f20746861742060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b600061305160278361276f565b915061305c82612ff5565b604082019050919050565b6000602082019050818103600083015261308081613044565b9050919050565b7f54726561737572792063616e206e6f7420626520746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130e360248361276f565b91506130ee82613087565b604082019050919050565b60006020820190508181036000830152613112816130d6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061317560268361276f565b915061318082613119565b604082019050919050565b600060208201905081810360008301526131a481613168565b9050919050565b7f43616e6e6f7420636c61696d206e617469766520746f6b656e73000000000000600082015250565b60006131e1601a8361276f565b91506131ec826131ab565b602082019050919050565b60006020820190508181036000830152613210816131d4565b9050919050565b60008151905061322681612883565b92915050565b60006020828403121561324257613241612816565b5b600061325084828501613217565b91505092915050565b600060408201905061326e6000830185612a53565b61327b602083018461299f565b9392505050565b60008151905061329181612b13565b92915050565b6000602082840312156132ad576132ac612816565b5b60006132bb84828501613282565b91505092915050565b7f537761702077697468206c696d697420697320616c726561647920736574207460008201527f6f20746861742073746174650000000000000000000000000000000000000000602082015250565b6000613320602c8361276f565b915061332b826132c4565b604082019050919050565b6000602082019050818103600083015261334f81613313565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133b260248361276f565b91506133bd82613356565b604082019050919050565b600060208201905081810360008301526133e1816133a5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061344460228361276f565b915061344f826133e8565b604082019050919050565b6000602082019050818103600083015261347381613437565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006134d660258361276f565b91506134e18261347a565b604082019050919050565b60006020820190508181036000830152613505816134c9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061356860238361276f565b91506135738261350c565b604082019050919050565b600060208201905081810360008301526135978161355b565b9050919050565b60006135a982612879565b91506135b483612879565b92508282026135c281612879565b915082820484148315176135d9576135d8612cde565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061361a82612879565b915061362583612879565b925082613635576136346135e0565b5b828204905092915050565b600061364b82612879565b915061365683612879565b925082820390508181111561366e5761366d612cde565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006136d060268361276f565b91506136db82613674565b604082019050919050565b600060208201905081810360008301526136ff816136c3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506137738161284d565b92915050565b60006020828403121561378f5761378e612816565b5b600061379d84828501613764565b91505092915050565b6000819050919050565b60006137cb6137c66137c1846137a6565b612925565b612879565b9050919050565b6137db816137b0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138168161283b565b82525050565b6000613828838361380d565b60208301905092915050565b6000602082019050919050565b600061384c826137e1565b61385681856137ec565b9350613861836137fd565b8060005b83811015613892578151613879888261381c565b975061388483613834565b925050600181019050613865565b5085935050505092915050565b600060a0820190506138b4600083018861299f565b6138c160208301876137d2565b81810360408301526138d38186613841565b90506138e26060830185612a53565b6138ef608083018461299f565b9695505050505050565b600060c08201905061390e6000830189612a53565b61391b602083018861299f565b61392860408301876137d2565b61393560608301866137d2565b6139426080830185612a53565b61394f60a083018461299f565b979650505050505050565b60008060006060848603121561397357613972612816565b5b600061398186828701613217565b935050602061399286828701613217565b92505060406139a386828701613217565b9150509250925092565b60006060820190506139c2600083018661299f565b6139cf602083018561299f565b6139dc604083018461299f565b94935050505056fea2646970667358221220410ef206c4b7feeec9bd969a9592c83388be7da78b8330dbb13b551be5b473ef64736f6c63430008110033608060405234801561001057600080fd5b50604051610cef380380610cef8339818101604052810190610032919061015f565b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506101b2565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061012c82610101565b9050919050565b61013c81610121565b811461014757600080fd5b50565b60008151905061015981610133565b92915050565b600080600060608486031215610178576101776100fc565b5b60006101868682870161014a565b93505060206101978682870161014a565b92505060406101a88682870161014a565b9150509250925092565b610b2e806101c16000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630758d9241461005c5780635d098b381461007a57806375f0a874146100965780638119c065146100b4578063fc0c546a146100be575b600080fd5b6100646100dc565b6040516100719190610697565b60405180910390f35b610094600480360381019061008f91906106f5565b610100565b005b61009e61020b565b6040516100ab9190610731565b60405180910390f35b6100bc610231565b005b6100c66105f2565b6040516100d3919061076d565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610190576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610187906107e5565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1ffd90b838134c6cfb56aa815cc97adc14b6cf358dc77a5ed8d8d826981f84bd816040516102009190610731565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600267ffffffffffffffff81111561024e5761024d610805565b5b60405190808252806020026020018201604052801561027c5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816000815181106102b6576102b5610834565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561035b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037f9190610878565b8160018151811061039357610392610834565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161042a9190610731565b602060405180830381865afa158015610447573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046b91906108db565b905060008111156105ee57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016104f3929190610917565b6020604051808303816000875af1158015610512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105369190610978565b5060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94782600085600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016105bb959493929190610a9e565b600060405180830381600087803b1580156105d557600080fd5b505af11580156105e9573d6000803e3d6000fd5b505050505b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061065d61065861065384610618565b610638565b610618565b9050919050565b600061066f82610642565b9050919050565b600061068182610664565b9050919050565b61069181610676565b82525050565b60006020820190506106ac6000830184610688565b92915050565b600080fd5b60006106c282610618565b9050919050565b6106d2816106b7565b81146106dd57600080fd5b50565b6000813590506106ef816106c9565b92915050565b60006020828403121561070b5761070a6106b2565b5b6000610719848285016106e0565b91505092915050565b61072b816106b7565b82525050565b60006020820190506107466000830184610722565b92915050565b600061075782610664565b9050919050565b6107678161074c565b82525050565b6000602082019050610782600083018461075e565b92915050565b600082825260208201905092915050565b7f6f6e6c7920616363657074206279206d61726b6574696e672077616c6c657400600082015250565b60006107cf601f83610788565b91506107da82610799565b602082019050919050565b600060208201905081810360008301526107fe816107c2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050610872816106c9565b92915050565b60006020828403121561088e5761088d6106b2565b5b600061089c84828501610863565b91505092915050565b6000819050919050565b6108b8816108a5565b81146108c357600080fd5b50565b6000815190506108d5816108af565b92915050565b6000602082840312156108f1576108f06106b2565b5b60006108ff848285016108c6565b91505092915050565b610911816108a5565b82525050565b600060408201905061092c6000830185610722565b6109396020830184610908565b9392505050565b60008115159050919050565b61095581610940565b811461096057600080fd5b50565b6000815190506109728161094c565b92915050565b60006020828403121561098e5761098d6106b2565b5b600061099c84828501610963565b91505092915050565b6000819050919050565b60006109ca6109c56109c0846109a5565b610638565b6108a5565b9050919050565b6109da816109af565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610a15816106b7565b82525050565b6000610a278383610a0c565b60208301905092915050565b6000602082019050919050565b6000610a4b826109e0565b610a5581856109eb565b9350610a60836109fc565b8060005b83811015610a91578151610a788882610a1b565b9750610a8383610a33565b925050600181019050610a64565b5085935050505092915050565b600060a082019050610ab36000830188610908565b610ac060208301876109d1565b8181036040830152610ad28186610a40565b9050610ae16060830185610722565b610aee6080830184610908565b969550505050505056fea264697066735822122046fef8b94e8eb5496be109595380e695233c7542d3ea5fbcd7640f3ed1f7902564736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c80638da5cb5b116100ec578063dd62ed3e1161008a578063f0f4426011610064578063f0f44260146105ed578063f2fde38b14610616578063f9d0831a1461063f578063fc35714214610668576101a7565b8063dd62ed3e1461055c578063e01af92c14610599578063e2f45605146105c2576101a7565b8063a457c2d7116100c6578063a457c2d714610490578063a9059cbb146104cd578063afa4f3b21461050a578063c024666814610533576101a7565b80638da5cb5b1461040f57806395d89b411461043a578063a071dcf414610465576101a7565b8063395093511161015957806361d027b31161013357806361d027b3146103655780636ddd17131461039057806370a08231146103bb578063715018a6146103f8576101a7565b806339509351146102d2578063488eb37f1461030f57806349bd5a5e1461033a576101a7565b806306fdde03146101ac578063095ea7b3146101d75780631694505e1461021457806318160ddd1461023f57806323b872dd1461026a578063313ce567146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610691565b6040516101ce91906127f4565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f991906128af565b610723565b60405161020b919061290a565b60405180910390f35b34801561022057600080fd5b50610229610741565b6040516102369190612984565b60405180910390f35b34801561024b57600080fd5b50610254610767565b60405161026191906129ae565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c91906129c9565b610771565b60405161029e919061290a565b60405180910390f35b3480156102b357600080fd5b506102bc610890565b6040516102c99190612a38565b60405180910390f35b3480156102de57600080fd5b506102f960048036038101906102f491906128af565b610899565b604051610306919061290a565b60405180910390f35b34801561031b57600080fd5b50610324610945565b604051610331919061290a565b60405180910390f35b34801561034657600080fd5b5061034f610958565b60405161035c9190612a62565b60405180910390f35b34801561037157600080fd5b5061037a61097e565b6040516103879190612a9e565b60405180910390f35b34801561039c57600080fd5b506103a56109a4565b6040516103b2919061290a565b60405180910390f35b3480156103c757600080fd5b506103e260048036038101906103dd9190612ab9565b6109b7565b6040516103ef91906129ae565b60405180910390f35b34801561040457600080fd5b5061040d6109ff565b005b34801561041b57600080fd5b50610424610b57565b6040516104319190612a62565b60405180910390f35b34801561044657600080fd5b5061044f610b81565b60405161045c91906127f4565b60405180910390f35b34801561047157600080fd5b5061047a610c13565b60405161048791906129ae565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b291906128af565b610c19565b6040516104c4919061290a565b60405180910390f35b3480156104d957600080fd5b506104f460048036038101906104ef91906128af565b610d04565b604051610501919061290a565b60405180910390f35b34801561051657600080fd5b50610531600480360381019061052c9190612ae6565b610d22565b005b34801561053f57600080fd5b5061055a60048036038101906105559190612b3f565b610e3e565b005b34801561056857600080fd5b50610583600480360381019061057e9190612b7f565b610fc2565b60405161059091906129ae565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb9190612bbf565b611049565b005b3480156105ce57600080fd5b506105d7611189565b6040516105e491906129ae565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190612ab9565b61118f565b005b34801561062257600080fd5b5061063d60048036038101906106389190612ab9565b6113f8565b005b34801561064b57600080fd5b5061066660048036038101906106619190612ab9565b6115be565b005b34801561067457600080fd5b5061068f600480360381019061068a9190612bbf565b61184b565b005b6060600380546106a090612c1b565b80601f01602080910402602001604051908101604052809291908181526020018280546106cc90612c1b565b80156107195780601f106106ee57610100808354040283529160200191610719565b820191906000526020600020905b8154815290600101906020018083116106fc57829003601f168201915b5050505050905090565b600061073761073061198b565b8484611993565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107bd61198b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108795782811015610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b90612cbe565b60405180910390fd5b6108788561087061198b565b858403611993565b5b610884858585611b5c565b60019150509392505050565b60006012905090565b600061093b6108a661198b565b8484600160006108b461198b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109369190612d0d565b611993565b6001905092915050565b600b60019054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a0761198b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8d90612d8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b9090612c1b565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbc90612c1b565b8015610c095780601f10610bde57610100808354040283529160200191610c09565b820191906000526020600020905b815481529060010190602001808311610bec57829003601f168201915b5050505050905090565b60065481565b60008060016000610c2861198b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdc90612e1f565b60405180910390fd5b610cf9610cf061198b565b85858403611993565b600191505092915050565b6000610d18610d1161198b565b8484611b5c565b6001905092915050565b610d2a61198b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db090612d8d565b60405180910390fd5b600a548103610dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df490612eb1565b60405180910390fd5b80600a819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b14581604051610e3391906129ae565b60405180910390a150565b610e4661198b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecc90612d8d565b60405180910390fd5b801515600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5e90612f43565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61105161198b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d790612d8d565b60405180910390fd5b801515600b60009054906101000a900460ff16151503611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c90612fd5565b60405180910390fd5b80600b60006101000a81548160ff0219169083151502179055507f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a128160405161117e919061290a565b60405180910390a150565b600a5481565b61119761198b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90612d8d565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad90613067565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131c906130f9565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fc714d22a2f08b695f81e7c707058db484aa5b4d6b4c9fd64beb10fe85832f608816040516113ed9190612a62565b60405180910390a150565b61140061198b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461148f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148690612d8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f59061318b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6115c661198b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164c90612d8d565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ba906131f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611743573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561173d573d6000803e3d6000fd5b50611848565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117839190612a62565b602060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061322c565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611801929190613259565b6020604051808303816000875af1158015611820573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118449190613297565b5050505b50565b61185361198b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d990612d8d565b60405180910390fd5b801515600b60019054906101000a900460ff16151503611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90613336565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055507f94da5f18dc9529c37f2af4ffa1921f49d8bb14b6e5fe22b0d6ddc94f102f923281604051611980919061290a565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f9906133c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a689061345a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b4f91906129ae565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc2906134ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c319061357e565b60405180910390fd5b60008103611c5357611c4e838360006120c1565b6120bc565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611cb257506000600c54145b8015611cbe5750600081115b15611ccb5742600c819055505b6000611cd6306109b7565b90506000600a548210159050600b60009054906101000a900460ff168015611cfb5750805b8015611d145750600b60029054906101000a900460ff16155b8015611d695750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e45576001600b60026101000a81548160ff021916908315150217905550600b60019054906101000a900460ff1615611da457600a5491505b611dad82612340565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638119c0656040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e1757600080fd5b505af1925050508015611e28575060015b506000600b60026101000a81548160ff0219169083151502179055505b6000600b60029054906101000a900460ff16159050600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611efb5750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611f0557600090505b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015611fb15750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611fbb57600090505b80156120ad576000606460065486611fd3919061359e565b611fdd919061360f565b9050611fe9878761267f565b1561200a576064602d86611ffd919061359e565b612007919061360f565b90505b80856120169190613640565b9450600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361207d576120788730836120c1565b6120ab565b6120aa87600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836120c1565b5b505b6120b88686866120c1565b5050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612130576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612127906134ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361219f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121969061357e565b60405180910390fd5b6121aa83838361275a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612230576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612227906136e6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122c39190612d0d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161232791906129ae565b60405180910390a361233a84848461275f565b50505050565b600060028261234f919061360f565b90506000818361235f9190613640565b905060004790506000600267ffffffffffffffff81111561238357612382613706565b5b6040519080825280602002602001820160405280156123b15781602001602082028036833780820191505090505b50905030816000815181106123c9576123c8613735565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612470573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124949190613779565b816001815181106124a8576124a7613735565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b815260040161254695949392919061389f565b600060405180830381600087803b15801561256057600080fd5b505af1158015612574573d6000803e3d6000fd5b50505050600082476125869190613640565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230876000806125d4610b57565b426040518863ffffffff1660e01b81526004016125f6969594939291906138f9565b60606040518083038185885af1158015612614573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612639919061395a565b5050507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185828660405161266f939291906139ad565b60405180910390a1505050505050565b6000600a600c54426126919190613640565b1080156126a157506000600c5414155b801561275257508173ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061275157508273ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561279e578082015181840152602081019050612783565b60008484015250505050565b6000601f19601f8301169050919050565b60006127c682612764565b6127d0818561276f565b93506127e0818560208601612780565b6127e9816127aa565b840191505092915050565b6000602082019050818103600083015261280e81846127bb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128468261281b565b9050919050565b6128568161283b565b811461286157600080fd5b50565b6000813590506128738161284d565b92915050565b6000819050919050565b61288c81612879565b811461289757600080fd5b50565b6000813590506128a981612883565b92915050565b600080604083850312156128c6576128c5612816565b5b60006128d485828601612864565b92505060206128e58582860161289a565b9150509250929050565b60008115159050919050565b612904816128ef565b82525050565b600060208201905061291f60008301846128fb565b92915050565b6000819050919050565b600061294a6129456129408461281b565b612925565b61281b565b9050919050565b600061295c8261292f565b9050919050565b600061296e82612951565b9050919050565b61297e81612963565b82525050565b60006020820190506129996000830184612975565b92915050565b6129a881612879565b82525050565b60006020820190506129c3600083018461299f565b92915050565b6000806000606084860312156129e2576129e1612816565b5b60006129f086828701612864565b9350506020612a0186828701612864565b9250506040612a128682870161289a565b9150509250925092565b600060ff82169050919050565b612a3281612a1c565b82525050565b6000602082019050612a4d6000830184612a29565b92915050565b612a5c8161283b565b82525050565b6000602082019050612a776000830184612a53565b92915050565b6000612a8882612951565b9050919050565b612a9881612a7d565b82525050565b6000602082019050612ab36000830184612a8f565b92915050565b600060208284031215612acf57612ace612816565b5b6000612add84828501612864565b91505092915050565b600060208284031215612afc57612afb612816565b5b6000612b0a8482850161289a565b91505092915050565b612b1c816128ef565b8114612b2757600080fd5b50565b600081359050612b3981612b13565b92915050565b60008060408385031215612b5657612b55612816565b5b6000612b6485828601612864565b9250506020612b7585828601612b2a565b9150509250929050565b60008060408385031215612b9657612b95612816565b5b6000612ba485828601612864565b9250506020612bb585828601612864565b9150509250929050565b600060208284031215612bd557612bd4612816565b5b6000612be384828501612b2a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c3357607f821691505b602082108103612c4657612c45612bec565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612ca860288361276f565b9150612cb382612c4c565b604082019050919050565b60006020820190508181036000830152612cd781612c9b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d1882612879565b9150612d2383612879565b9250828201905080821115612d3b57612d3a612cde565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d7760208361276f565b9150612d8282612d41565b602082019050919050565b60006020820190508181036000830152612da681612d6a565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612e0960258361276f565b9150612e1482612dad565b604082019050919050565b60006020820190508181036000830152612e3881612dfc565b9050919050565b7f5377617020746f6b656e7320617420616d6f756e7420697320616c726561647960008201527f2073657420746f207468617420616d6f756e7400000000000000000000000000602082015250565b6000612e9b60338361276f565b9150612ea682612e3f565b604082019050919050565b60006020820190508181036000830152612eca81612e8e565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000612f2d602a8361276f565b9150612f3882612ed1565b604082019050919050565b60006020820190508181036000830152612f5c81612f20565b9050919050565b7f5377617020697320616c72656164792073657420746f2074686174207374617460008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fbf60218361276f565b9150612fca82612f63565b604082019050919050565b60006020820190508181036000830152612fee81612fb2565b9050919050565b7f547265617375727920697320616c72656164792073657420746f20746861742060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b600061305160278361276f565b915061305c82612ff5565b604082019050919050565b6000602082019050818103600083015261308081613044565b9050919050565b7f54726561737572792063616e206e6f7420626520746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130e360248361276f565b91506130ee82613087565b604082019050919050565b60006020820190508181036000830152613112816130d6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061317560268361276f565b915061318082613119565b604082019050919050565b600060208201905081810360008301526131a481613168565b9050919050565b7f43616e6e6f7420636c61696d206e617469766520746f6b656e73000000000000600082015250565b60006131e1601a8361276f565b91506131ec826131ab565b602082019050919050565b60006020820190508181036000830152613210816131d4565b9050919050565b60008151905061322681612883565b92915050565b60006020828403121561324257613241612816565b5b600061325084828501613217565b91505092915050565b600060408201905061326e6000830185612a53565b61327b602083018461299f565b9392505050565b60008151905061329181612b13565b92915050565b6000602082840312156132ad576132ac612816565b5b60006132bb84828501613282565b91505092915050565b7f537761702077697468206c696d697420697320616c726561647920736574207460008201527f6f20746861742073746174650000000000000000000000000000000000000000602082015250565b6000613320602c8361276f565b915061332b826132c4565b604082019050919050565b6000602082019050818103600083015261334f81613313565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133b260248361276f565b91506133bd82613356565b604082019050919050565b600060208201905081810360008301526133e1816133a5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061344460228361276f565b915061344f826133e8565b604082019050919050565b6000602082019050818103600083015261347381613437565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006134d660258361276f565b91506134e18261347a565b604082019050919050565b60006020820190508181036000830152613505816134c9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061356860238361276f565b91506135738261350c565b604082019050919050565b600060208201905081810360008301526135978161355b565b9050919050565b60006135a982612879565b91506135b483612879565b92508282026135c281612879565b915082820484148315176135d9576135d8612cde565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061361a82612879565b915061362583612879565b925082613635576136346135e0565b5b828204905092915050565b600061364b82612879565b915061365683612879565b925082820390508181111561366e5761366d612cde565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006136d060268361276f565b91506136db82613674565b604082019050919050565b600060208201905081810360008301526136ff816136c3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506137738161284d565b92915050565b60006020828403121561378f5761378e612816565b5b600061379d84828501613764565b91505092915050565b6000819050919050565b60006137cb6137c66137c1846137a6565b612925565b612879565b9050919050565b6137db816137b0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138168161283b565b82525050565b6000613828838361380d565b60208301905092915050565b6000602082019050919050565b600061384c826137e1565b61385681856137ec565b9350613861836137fd565b8060005b83811015613892578151613879888261381c565b975061388483613834565b925050600181019050613865565b5085935050505092915050565b600060a0820190506138b4600083018861299f565b6138c160208301876137d2565b81810360408301526138d38186613841565b90506138e26060830185612a53565b6138ef608083018461299f565b9695505050505050565b600060c08201905061390e6000830189612a53565b61391b602083018861299f565b61392860408301876137d2565b61393560608301866137d2565b6139426080830185612a53565b61394f60a083018461299f565b979650505050505050565b60008060006060848603121561397357613972612816565b5b600061398186828701613217565b935050602061399286828701613217565b92505060406139a386828701613217565b9150509250925092565b60006060820190506139c2600083018661299f565b6139cf602083018561299f565b6139dc604083018461299f565b94935050505056fea2646970667358221220410ef206c4b7feeec9bd969a9592c83388be7da78b8330dbb13b551be5b473ef64736f6c63430008110033

Deployed Bytecode Sourcemap

17952:6640:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2954:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3868:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18036:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3275:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4045:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3174:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4626:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18229:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18115:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18084:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18192:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3391:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2141:148;;;;;;;;;;;;;:::i;:::-;;1927:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3062:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18002:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4849:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3526:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22594:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19963:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3709:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21965:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18152:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22212:374;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2297:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24154:435;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22878:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2954:100;3008:13;3041:5;3034:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2954:100;:::o;3868:169::-;3951:4;3968:39;3977:12;:10;:12::i;:::-;3991:7;4000:6;3968:8;:39::i;:::-;4025:4;4018:11;;3868:169;;;;:::o;18036:41::-;;;;;;;;;;;;;:::o;3275:108::-;3336:7;3363:12;;3356:19;;3275:108;:::o;4045:573::-;4185:4;4202:24;4229:11;:19;4241:6;4229:19;;;;;;;;;;;;;;;:33;4249:12;:10;:12::i;:::-;4229:33;;;;;;;;;;;;;;;;4202:60;;4297:17;4277:16;:37;4273:265;;4359:6;4339:16;:26;;4331:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4454:57;4463:6;4471:12;:10;:12::i;:::-;4504:6;4485:16;:25;4454:8;:57::i;:::-;4273:265;4550:36;4560:6;4568:9;4579:6;4550:9;:36::i;:::-;4606:4;4599:11;;;4045:573;;;;;:::o;3174:93::-;3232:5;3257:2;3250:9;;3174:93;:::o;4626:215::-;4714:4;4731:80;4740:12;:10;:12::i;:::-;4754:7;4800:10;4763:11;:25;4775:12;:10;:12::i;:::-;4763:25;;;;;;;;;;;;;;;:34;4789:7;4763:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4731:8;:80::i;:::-;4829:4;4822:11;;4626:215;;;;:::o;18229:25::-;;;;;;;;;;;;;:::o;18115:28::-;;;;;;;;;;;;;:::o;18084:24::-;;;;;;;;;;;;;:::o;18192:30::-;;;;;;;;;;;;;:::o;3391:127::-;3465:7;3492:9;:18;3502:7;3492:18;;;;;;;;;;;;;;;;3485:25;;3391:127;;;:::o;2141:148::-;2064:12;:10;:12::i;:::-;2054:22;;:6;;;;;;;;;;;:22;;;2046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2248:1:::1;2211:40;;2232:6;;;;;;;;;;;2211:40;;;;;;;;;;;;2279:1;2262:6;;:19;;;;;;;;;;;;;;;;;;2141:148::o:0;1927:79::-;1965:7;1992:6;;;;;;;;;;;1985:13;;1927:79;:::o;3062:104::-;3118:13;3151:7;3144:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3062:104;:::o;18002:25::-;;;;:::o;4849:413::-;4942:4;4959:24;4986:11;:25;4998:12;:10;:12::i;:::-;4986:25;;;;;;;;;;;;;;;:34;5012:7;4986:34;;;;;;;;;;;;;;;;4959:61;;5059:15;5039:16;:35;;5031:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5152:67;5161:12;:10;:12::i;:::-;5175:7;5203:15;5184:16;:34;5152:8;:67::i;:::-;5250:4;5243:11;;;4849:413;;;;:::o;3526:175::-;3612:4;3629:42;3639:12;:10;:12::i;:::-;3653:9;3664:6;3629:9;:42::i;:::-;3689:4;3682:11;;3526:175;;;;:::o;22594:276::-;2064:12;:10;:12::i;:::-;2054:22;;:6;;;;;;;;;;;:22;;;2046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22695:18:::1;;22682:9;:31:::0;22674:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22801:9;22780:18;:30;;;;22826:36;22852:9;22826:36;;;;;;:::i;:::-;;;;;;;;22594:276:::0;:::o;19963:240::-;2064:12;:10;:12::i;:::-;2054:22;;:6;;;;;;;;;;;:22;;;2046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20090:8:::1;20058:40;;:19;:28;20078:7;20058:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;20050:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20187:8;20156:19;:28;20176:7;20156:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19963:240:::0;;:::o;3709:151::-;3798:7;3825:11;:18;3837:5;3825:18;;;;;;;;;;;;;;;:27;3844:7;3825:27;;;;;;;;;;;;;;;;3818:34;;3709:151;;;;:::o;21965:239::-;2064:12;:10;:12::i;:::-;2054:22;;:6;;;;;;;;;;;:22;;;2046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22061:12:::1;22046:27;;:11;;;;;;;;;;;:27;;::::0;22038:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22136:12;22122:11;;:26;;;;;;;;;;;;;;;;;;22164:32;22183:12;22164:32;;;;;;:::i;:::-;;;;;;;;21965:239:::0;:::o;18152:33::-;;;;:::o;22212:374::-;2064:12;:10;:12::i;:::-;2054:22;;:6;;;;;;;;;;;:22;;;2046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22311:8:::1;;;;;;;;;;;22290:30;;:9;:30;;::::0;22282:82:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22404:1;22383:23;;:9;:23;;::::0;22375:72:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22478:9;22458:8;;:30;;;;;;;;;;;;;;;;;;22532:4;22499:19;:30;22519:9;22499:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;22552:26;22568:9;22552:26;;;;;;:::i;:::-;;;;;;;;22212:374:::0;:::o;2297:244::-;2064:12;:10;:12::i;:::-;2054:22;;:6;;;;;;;;;;;:22;;;2046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2406:1:::1;2386:22;;:8;:22;;::::0;2378:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2496:8;2467:38;;2488:6;;;;;;;;;;;2467:38;;;;;;;;;;;;2525:8;2516:6;;:17;;;;;;;;;;;;;;;;;;2297:244:::0;:::o;24154:435::-;2064:12;:10;:12::i;:::-;2054:22;;:6;;;;;;;;;;;:22;;;2046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24250:4:::1;24233:22;;:5;:22;;::::0;24225:61:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24318:3;24301:21;;:5;:21;;::::0;24297:126:::1;;24347:10;24339:28;;:51;24368:21;24339:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24405:7;;24297:126;24433:17;24460:5;24433:33;;24477:15;24495:10;:20;;;24524:4;24495:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24477:53;;24541:10;:19;;;24561:10;24573:7;24541:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24214:375;;2124:1;24154:435:::0;:::o;22878:272::-;2064:12;:10;:12::i;:::-;2054:22;;:6;;;;;;;;;;;:22;;;2046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22986:14:::1;22969:31;;:13;;;;;;;;;;;:31;;::::0;22961:88:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23076:14;23060:13;;:30;;;;;;;;;;;;;;;;;;23106:36;23127:14;23106:36;;;;;;:::i;:::-;;;;;;;;22878:272:::0;:::o;1251:98::-;1304:7;1331:10;1324:17;;1251:98;:::o;7017:380::-;7170:1;7153:19;;:5;:19;;;7145:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7251:1;7232:21;;:7;:21;;;7224:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7335:6;7305:11;:18;7317:5;7305:18;;;;;;;;;;;;;;;:27;7324:7;7305:27;;;;;;;;;;;;;;;:36;;;;7373:7;7357:32;;7366:5;7357:32;;;7382:6;7357:32;;;;;;:::i;:::-;;;;;;;;7017:380;;;:::o;20211:1746::-;20359:1;20343:18;;:4;:18;;;20335:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20436:1;20422:16;;:2;:16;;;20414:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20505:1;20495:6;:11;20491:93;;20523:28;20539:4;20545:2;20549:1;20523:15;:28::i;:::-;20566:7;;20491:93;20606:13;;;;;;;;;;;20600:19;;:2;:19;;;:38;;;;;20637:1;20623:10;;:15;20600:38;:52;;;;;20651:1;20642:6;:10;20600:52;20596:113;;;20682:15;20669:10;:28;;;;20596:113;20721:28;20752:24;20770:4;20752:9;:24::i;:::-;20721:55;;20789:12;20828:18;;20804:20;:42;;20789:57;;20863:11;;;;;;;;;;;:22;;;;;20878:7;20863:22;:35;;;;;20890:8;;;;;;;;;;;20889:9;20863:35;:68;;;;;20902:25;:29;20928:2;20902:29;;;;;;;;;;;;;;;;;;;;;;;;;20863:68;20859:360;;;20959:4;20948:8;;:15;;;;;;;;;;;;;;;;;;20984:13;;;;;;;;;;;20980:95;;;21041:18;;21018:41;;20980:95;21091:36;21106:20;21091:14;:36::i;:::-;21148:8;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21144:31;21202:5;21191:8;;:16;;;;;;;;;;;;;;;;;;20859:360;21231:12;21247:8;;;;;;;;;;;21246:9;21231:24;;21272:19;:25;21292:4;21272:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21301:19;:23;21321:2;21301:23;;;;;;;;;;;;;;;;;;;;;;;;;21272:52;21268:100;;;21351:5;21341:15;;21268:100;21392:13;;;;;;;;;;;21384:21;;:4;:21;;;;:44;;;;;21415:13;;;;;;;;;;;21409:19;;:2;:19;;;;21384:44;21380:92;;;21455:5;21445:15;;21380:92;21488:7;21484:420;;;21512:12;21547:3;21537:6;;21528;:15;;;;:::i;:::-;21527:23;;;;:::i;:::-;21512:38;;21569:15;21575:4;21581:2;21569:5;:15::i;:::-;21565:82;;;21628:3;21622:2;21613:6;:11;;;;:::i;:::-;21612:19;;;;:::i;:::-;21605:26;;21565:82;21681:4;21672:6;:13;;;;:::i;:::-;21663:22;;21714:13;;;;;;;;;;;21706:21;;:4;:21;;;21702:191;;21748:42;21764:4;21778;21785;21748:15;:42::i;:::-;21702:191;;;21831:46;21847:4;21861:8;;;;;;;;;;;21872:4;21831:15;:46::i;:::-;21702:191;21497:407;21484:420;21916:33;21932:4;21938:2;21942:6;21916:15;:33::i;:::-;20324:1633;;;20211:1746;;;;:::o;5270:733::-;5428:1;5410:20;;:6;:20;;;5402:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5512:1;5491:23;;:9;:23;;;5483:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5567:47;5588:6;5596:9;5607:6;5567:20;:47::i;:::-;5627:21;5651:9;:17;5661:6;5651:17;;;;;;;;;;;;;;;;5627:41;;5704:6;5687:13;:23;;5679:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5825:6;5809:13;:22;5789:9;:17;5799:6;5789:17;;;;;;;;;;;;;;;:42;;;;5877:6;5853:9;:20;5863:9;5853:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5918:9;5901:35;;5910:6;5901:35;;;5929:6;5901:35;;;;;;:::i;:::-;;;;;;;;5949:46;5969:6;5977:9;5988:6;5949:19;:46::i;:::-;5391:612;5270:733;;;:::o;23363:783::-;23422:12;23446:1;23437:6;:10;;;;:::i;:::-;23422:25;;23458:17;23487:4;23478:6;:13;;;;:::i;:::-;23458:33;;23504:22;23529:21;23504:46;;23563:21;23601:1;23587:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23563:40;;23632:4;23614;23619:1;23614:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23658:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23648:4;23653:1;23648:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23693:15;;;;;;;;;;;:66;;;23774:4;23793:1;23809:4;23836;23856:15;23693:189;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23895:18;23940:14;23916:21;:38;;;;:::i;:::-;23895:59;;23967:15;;;;;;;;;;;:31;;;24007:10;24028:4;24035:9;24046:1;24049;24052:7;:5;:7::i;:::-;24061:15;23967:110;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24095:43;24110:4;24116:10;24128:9;24095:43;;;;;;;;:::i;:::-;;;;;;;;23411:735;;;;;23363:783;:::o;23158:197::-;23221:4;23276:2;23263:10;;23245:15;:28;;;;:::i;:::-;:33;:52;;;;;23296:1;23282:10;;:15;;23245:52;:102;;;;;23319:2;23302:19;;:13;;;;;;;;;;;:19;;;:44;;;;23342:4;23325:21;;:13;;;;;;;;;;;:21;;;23302:44;23245:102;23238:109;;23158:197;;;;:::o;7405:125::-;;;;:::o;7538:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:619::-;4853:6;4861;4869;4918:2;4906:9;4897:7;4893:23;4889:32;4886:119;;;4924:79;;:::i;:::-;4886:119;5044:1;5069:53;5114:7;5105:6;5094:9;5090:22;5069:53;:::i;:::-;5059:63;;5015:117;5171:2;5197:53;5242:7;5233:6;5222:9;5218:22;5197:53;:::i;:::-;5187:63;;5142:118;5299:2;5325:53;5370:7;5361:6;5350:9;5346:22;5325:53;:::i;:::-;5315:63;;5270:118;4776:619;;;;;:::o;5401:86::-;5436:7;5476:4;5469:5;5465:16;5454:27;;5401:86;;;:::o;5493:112::-;5576:22;5592:5;5576:22;:::i;:::-;5571:3;5564:35;5493:112;;:::o;5611:214::-;5700:4;5738:2;5727:9;5723:18;5715:26;;5751:67;5815:1;5804:9;5800:17;5791:6;5751:67;:::i;:::-;5611:214;;;;:::o;5831:118::-;5918:24;5936:5;5918:24;:::i;:::-;5913:3;5906:37;5831:118;;:::o;5955:222::-;6048:4;6086:2;6075:9;6071:18;6063:26;;6099:71;6167:1;6156:9;6152:17;6143:6;6099:71;:::i;:::-;5955:222;;;;:::o;6183:143::-;6250:9;6283:37;6314:5;6283:37;:::i;:::-;6270:50;;6183:143;;;:::o;6332:165::-;6436:54;6484:5;6436:54;:::i;:::-;6431:3;6424:67;6332:165;;:::o;6503:256::-;6613:4;6651:2;6640:9;6636:18;6628:26;;6664:88;6749:1;6738:9;6734:17;6725:6;6664:88;:::i;:::-;6503:256;;;;:::o;6765:329::-;6824:6;6873:2;6861:9;6852:7;6848:23;6844:32;6841:119;;;6879:79;;:::i;:::-;6841:119;6999:1;7024:53;7069:7;7060:6;7049:9;7045:22;7024:53;:::i;:::-;7014:63;;6970:117;6765:329;;;;:::o;7100:::-;7159:6;7208:2;7196:9;7187:7;7183:23;7179:32;7176:119;;;7214:79;;:::i;:::-;7176:119;7334:1;7359:53;7404:7;7395:6;7384:9;7380:22;7359:53;:::i;:::-;7349:63;;7305:117;7100:329;;;;:::o;7435:116::-;7505:21;7520:5;7505:21;:::i;:::-;7498:5;7495:32;7485:60;;7541:1;7538;7531:12;7485:60;7435:116;:::o;7557:133::-;7600:5;7638:6;7625:20;7616:29;;7654:30;7678:5;7654:30;:::i;:::-;7557:133;;;;:::o;7696:468::-;7761:6;7769;7818:2;7806:9;7797:7;7793:23;7789:32;7786:119;;;7824:79;;:::i;:::-;7786:119;7944:1;7969:53;8014:7;8005:6;7994:9;7990:22;7969:53;:::i;:::-;7959:63;;7915:117;8071:2;8097:50;8139:7;8130:6;8119:9;8115:22;8097:50;:::i;:::-;8087:60;;8042:115;7696:468;;;;;:::o;8170:474::-;8238:6;8246;8295:2;8283:9;8274:7;8270:23;8266:32;8263:119;;;8301:79;;:::i;:::-;8263:119;8421:1;8446:53;8491:7;8482:6;8471:9;8467:22;8446:53;:::i;:::-;8436:63;;8392:117;8548:2;8574:53;8619:7;8610:6;8599:9;8595:22;8574:53;:::i;:::-;8564:63;;8519:118;8170:474;;;;;:::o;8650:323::-;8706:6;8755:2;8743:9;8734:7;8730:23;8726:32;8723:119;;;8761:79;;:::i;:::-;8723:119;8881:1;8906:50;8948:7;8939:6;8928:9;8924:22;8906:50;:::i;:::-;8896:60;;8852:114;8650:323;;;;:::o;8979:180::-;9027:77;9024:1;9017:88;9124:4;9121:1;9114:15;9148:4;9145:1;9138:15;9165:320;9209:6;9246:1;9240:4;9236:12;9226:22;;9293:1;9287:4;9283:12;9314:18;9304:81;;9370:4;9362:6;9358:17;9348:27;;9304:81;9432:2;9424:6;9421:14;9401:18;9398:38;9395:84;;9451:18;;:::i;:::-;9395:84;9216:269;9165:320;;;:::o;9491:227::-;9631:34;9627:1;9619:6;9615:14;9608:58;9700:10;9695:2;9687:6;9683:15;9676:35;9491:227;:::o;9724:366::-;9866:3;9887:67;9951:2;9946:3;9887:67;:::i;:::-;9880:74;;9963:93;10052:3;9963:93;:::i;:::-;10081:2;10076:3;10072:12;10065:19;;9724:366;;;:::o;10096:419::-;10262:4;10300:2;10289:9;10285:18;10277:26;;10349:9;10343:4;10339:20;10335:1;10324:9;10320:17;10313:47;10377:131;10503:4;10377:131;:::i;:::-;10369:139;;10096:419;;;:::o;10521:180::-;10569:77;10566:1;10559:88;10666:4;10663:1;10656:15;10690:4;10687:1;10680:15;10707:191;10747:3;10766:20;10784:1;10766:20;:::i;:::-;10761:25;;10800:20;10818:1;10800:20;:::i;:::-;10795:25;;10843:1;10840;10836:9;10829:16;;10864:3;10861:1;10858:10;10855:36;;;10871:18;;:::i;:::-;10855:36;10707:191;;;;:::o;10904:182::-;11044:34;11040:1;11032:6;11028:14;11021:58;10904:182;:::o;11092:366::-;11234:3;11255:67;11319:2;11314:3;11255:67;:::i;:::-;11248:74;;11331:93;11420:3;11331:93;:::i;:::-;11449:2;11444:3;11440:12;11433:19;;11092:366;;;:::o;11464:419::-;11630:4;11668:2;11657:9;11653:18;11645:26;;11717:9;11711:4;11707:20;11703:1;11692:9;11688:17;11681:47;11745:131;11871:4;11745:131;:::i;:::-;11737:139;;11464:419;;;:::o;11889:224::-;12029:34;12025:1;12017:6;12013:14;12006:58;12098:7;12093:2;12085:6;12081:15;12074:32;11889:224;:::o;12119:366::-;12261:3;12282:67;12346:2;12341:3;12282:67;:::i;:::-;12275:74;;12358:93;12447:3;12358:93;:::i;:::-;12476:2;12471:3;12467:12;12460:19;;12119:366;;;:::o;12491:419::-;12657:4;12695:2;12684:9;12680:18;12672:26;;12744:9;12738:4;12734:20;12730:1;12719:9;12715:17;12708:47;12772:131;12898:4;12772:131;:::i;:::-;12764:139;;12491:419;;;:::o;12916:238::-;13056:34;13052:1;13044:6;13040:14;13033:58;13125:21;13120:2;13112:6;13108:15;13101:46;12916:238;:::o;13160:366::-;13302:3;13323:67;13387:2;13382:3;13323:67;:::i;:::-;13316:74;;13399:93;13488:3;13399:93;:::i;:::-;13517:2;13512:3;13508:12;13501:19;;13160:366;;;:::o;13532:419::-;13698:4;13736:2;13725:9;13721:18;13713:26;;13785:9;13779:4;13775:20;13771:1;13760:9;13756:17;13749:47;13813:131;13939:4;13813:131;:::i;:::-;13805:139;;13532:419;;;:::o;13957:229::-;14097:34;14093:1;14085:6;14081:14;14074:58;14166:12;14161:2;14153:6;14149:15;14142:37;13957:229;:::o;14192:366::-;14334:3;14355:67;14419:2;14414:3;14355:67;:::i;:::-;14348:74;;14431:93;14520:3;14431:93;:::i;:::-;14549:2;14544:3;14540:12;14533:19;;14192:366;;;:::o;14564:419::-;14730:4;14768:2;14757:9;14753:18;14745:26;;14817:9;14811:4;14807:20;14803:1;14792:9;14788:17;14781:47;14845:131;14971:4;14845:131;:::i;:::-;14837:139;;14564:419;;;:::o;14989:220::-;15129:34;15125:1;15117:6;15113:14;15106:58;15198:3;15193:2;15185:6;15181:15;15174:28;14989:220;:::o;15215:366::-;15357:3;15378:67;15442:2;15437:3;15378:67;:::i;:::-;15371:74;;15454:93;15543:3;15454:93;:::i;:::-;15572:2;15567:3;15563:12;15556:19;;15215:366;;;:::o;15587:419::-;15753:4;15791:2;15780:9;15776:18;15768:26;;15840:9;15834:4;15830:20;15826:1;15815:9;15811:17;15804:47;15868:131;15994:4;15868:131;:::i;:::-;15860:139;;15587:419;;;:::o;16012:226::-;16152:34;16148:1;16140:6;16136:14;16129:58;16221:9;16216:2;16208:6;16204:15;16197:34;16012:226;:::o;16244:366::-;16386:3;16407:67;16471:2;16466:3;16407:67;:::i;:::-;16400:74;;16483:93;16572:3;16483:93;:::i;:::-;16601:2;16596:3;16592:12;16585:19;;16244:366;;;:::o;16616:419::-;16782:4;16820:2;16809:9;16805:18;16797:26;;16869:9;16863:4;16859:20;16855:1;16844:9;16840:17;16833:47;16897:131;17023:4;16897:131;:::i;:::-;16889:139;;16616:419;;;:::o;17041:223::-;17181:34;17177:1;17169:6;17165:14;17158:58;17250:6;17245:2;17237:6;17233:15;17226:31;17041:223;:::o;17270:366::-;17412:3;17433:67;17497:2;17492:3;17433:67;:::i;:::-;17426:74;;17509:93;17598:3;17509:93;:::i;:::-;17627:2;17622:3;17618:12;17611:19;;17270:366;;;:::o;17642:419::-;17808:4;17846:2;17835:9;17831:18;17823:26;;17895:9;17889:4;17885:20;17881:1;17870:9;17866:17;17859:47;17923:131;18049:4;17923:131;:::i;:::-;17915:139;;17642:419;;;:::o;18067:225::-;18207:34;18203:1;18195:6;18191:14;18184:58;18276:8;18271:2;18263:6;18259:15;18252:33;18067:225;:::o;18298:366::-;18440:3;18461:67;18525:2;18520:3;18461:67;:::i;:::-;18454:74;;18537:93;18626:3;18537:93;:::i;:::-;18655:2;18650:3;18646:12;18639:19;;18298:366;;;:::o;18670:419::-;18836:4;18874:2;18863:9;18859:18;18851:26;;18923:9;18917:4;18913:20;18909:1;18898:9;18894:17;18887:47;18951:131;19077:4;18951:131;:::i;:::-;18943:139;;18670:419;;;:::o;19095:176::-;19235:28;19231:1;19223:6;19219:14;19212:52;19095:176;:::o;19277:366::-;19419:3;19440:67;19504:2;19499:3;19440:67;:::i;:::-;19433:74;;19516:93;19605:3;19516:93;:::i;:::-;19634:2;19629:3;19625:12;19618:19;;19277:366;;;:::o;19649:419::-;19815:4;19853:2;19842:9;19838:18;19830:26;;19902:9;19896:4;19892:20;19888:1;19877:9;19873:17;19866:47;19930:131;20056:4;19930:131;:::i;:::-;19922:139;;19649:419;;;:::o;20074:143::-;20131:5;20162:6;20156:13;20147:22;;20178:33;20205:5;20178:33;:::i;:::-;20074:143;;;;:::o;20223:351::-;20293:6;20342:2;20330:9;20321:7;20317:23;20313:32;20310:119;;;20348:79;;:::i;:::-;20310:119;20468:1;20493:64;20549:7;20540:6;20529:9;20525:22;20493:64;:::i;:::-;20483:74;;20439:128;20223:351;;;;:::o;20580:332::-;20701:4;20739:2;20728:9;20724:18;20716:26;;20752:71;20820:1;20809:9;20805:17;20796:6;20752:71;:::i;:::-;20833:72;20901:2;20890:9;20886:18;20877:6;20833:72;:::i;:::-;20580:332;;;;;:::o;20918:137::-;20972:5;21003:6;20997:13;20988:22;;21019:30;21043:5;21019:30;:::i;:::-;20918:137;;;;:::o;21061:345::-;21128:6;21177:2;21165:9;21156:7;21152:23;21148:32;21145:119;;;21183:79;;:::i;:::-;21145:119;21303:1;21328:61;21381:7;21372:6;21361:9;21357:22;21328:61;:::i;:::-;21318:71;;21274:125;21061:345;;;;:::o;21412:231::-;21552:34;21548:1;21540:6;21536:14;21529:58;21621:14;21616:2;21608:6;21604:15;21597:39;21412:231;:::o;21649:366::-;21791:3;21812:67;21876:2;21871:3;21812:67;:::i;:::-;21805:74;;21888:93;21977:3;21888:93;:::i;:::-;22006:2;22001:3;21997:12;21990:19;;21649:366;;;:::o;22021:419::-;22187:4;22225:2;22214:9;22210:18;22202:26;;22274:9;22268:4;22264:20;22260:1;22249:9;22245:17;22238:47;22302:131;22428:4;22302:131;:::i;:::-;22294:139;;22021:419;;;:::o;22446:223::-;22586:34;22582:1;22574:6;22570:14;22563:58;22655:6;22650:2;22642:6;22638:15;22631:31;22446:223;:::o;22675:366::-;22817:3;22838:67;22902:2;22897:3;22838:67;:::i;:::-;22831:74;;22914:93;23003:3;22914:93;:::i;:::-;23032:2;23027:3;23023:12;23016:19;;22675:366;;;:::o;23047:419::-;23213:4;23251:2;23240:9;23236:18;23228:26;;23300:9;23294:4;23290:20;23286:1;23275:9;23271:17;23264:47;23328:131;23454:4;23328:131;:::i;:::-;23320:139;;23047:419;;;:::o;23472:221::-;23612:34;23608:1;23600:6;23596:14;23589:58;23681:4;23676:2;23668:6;23664:15;23657:29;23472:221;:::o;23699:366::-;23841:3;23862:67;23926:2;23921:3;23862:67;:::i;:::-;23855:74;;23938:93;24027:3;23938:93;:::i;:::-;24056:2;24051:3;24047:12;24040:19;;23699:366;;;:::o;24071:419::-;24237:4;24275:2;24264:9;24260:18;24252:26;;24324:9;24318:4;24314:20;24310:1;24299:9;24295:17;24288:47;24352:131;24478:4;24352:131;:::i;:::-;24344:139;;24071:419;;;:::o;24496:224::-;24636:34;24632:1;24624:6;24620:14;24613:58;24705:7;24700:2;24692:6;24688:15;24681:32;24496:224;:::o;24726:366::-;24868:3;24889:67;24953:2;24948:3;24889:67;:::i;:::-;24882:74;;24965:93;25054:3;24965:93;:::i;:::-;25083:2;25078:3;25074:12;25067:19;;24726:366;;;:::o;25098:419::-;25264:4;25302:2;25291:9;25287:18;25279:26;;25351:9;25345:4;25341:20;25337:1;25326:9;25322:17;25315:47;25379:131;25505:4;25379:131;:::i;:::-;25371:139;;25098:419;;;:::o;25523:222::-;25663:34;25659:1;25651:6;25647:14;25640:58;25732:5;25727:2;25719:6;25715:15;25708:30;25523:222;:::o;25751:366::-;25893:3;25914:67;25978:2;25973:3;25914:67;:::i;:::-;25907:74;;25990:93;26079:3;25990:93;:::i;:::-;26108:2;26103:3;26099:12;26092:19;;25751:366;;;:::o;26123:419::-;26289:4;26327:2;26316:9;26312:18;26304:26;;26376:9;26370:4;26366:20;26362:1;26351:9;26347:17;26340:47;26404:131;26530:4;26404:131;:::i;:::-;26396:139;;26123:419;;;:::o;26548:410::-;26588:7;26611:20;26629:1;26611:20;:::i;:::-;26606:25;;26645:20;26663:1;26645:20;:::i;:::-;26640:25;;26700:1;26697;26693:9;26722:30;26740:11;26722:30;:::i;:::-;26711:41;;26901:1;26892:7;26888:15;26885:1;26882:22;26862:1;26855:9;26835:83;26812:139;;26931:18;;:::i;:::-;26812:139;26596:362;26548:410;;;;:::o;26964:180::-;27012:77;27009:1;27002:88;27109:4;27106:1;27099:15;27133:4;27130:1;27123:15;27150:185;27190:1;27207:20;27225:1;27207:20;:::i;:::-;27202:25;;27241:20;27259:1;27241:20;:::i;:::-;27236:25;;27280:1;27270:35;;27285:18;;:::i;:::-;27270:35;27327:1;27324;27320:9;27315:14;;27150:185;;;;:::o;27341:194::-;27381:4;27401:20;27419:1;27401:20;:::i;:::-;27396:25;;27435:20;27453:1;27435:20;:::i;:::-;27430:25;;27479:1;27476;27472:9;27464:17;;27503:1;27497:4;27494:11;27491:37;;;27508:18;;:::i;:::-;27491:37;27341:194;;;;:::o;27541:225::-;27681:34;27677:1;27669:6;27665:14;27658:58;27750:8;27745:2;27737:6;27733:15;27726:33;27541:225;:::o;27772:366::-;27914:3;27935:67;27999:2;27994:3;27935:67;:::i;:::-;27928:74;;28011:93;28100:3;28011:93;:::i;:::-;28129:2;28124:3;28120:12;28113:19;;27772:366;;;:::o;28144:419::-;28310:4;28348:2;28337:9;28333:18;28325:26;;28397:9;28391:4;28387:20;28383:1;28372:9;28368:17;28361:47;28425:131;28551:4;28425:131;:::i;:::-;28417:139;;28144:419;;;:::o;28569:180::-;28617:77;28614:1;28607:88;28714:4;28711:1;28704:15;28738:4;28735:1;28728:15;28755:180;28803:77;28800:1;28793:88;28900:4;28897:1;28890:15;28924:4;28921:1;28914:15;28941:143;28998:5;29029:6;29023:13;29014:22;;29045:33;29072:5;29045:33;:::i;:::-;28941:143;;;;:::o;29090:351::-;29160:6;29209:2;29197:9;29188:7;29184:23;29180:32;29177:119;;;29215:79;;:::i;:::-;29177:119;29335:1;29360:64;29416:7;29407:6;29396:9;29392:22;29360:64;:::i;:::-;29350:74;;29306:128;29090:351;;;;:::o;29447:85::-;29492:7;29521:5;29510:16;;29447:85;;;:::o;29538:158::-;29596:9;29629:61;29647:42;29656:32;29682:5;29656:32;:::i;:::-;29647:42;:::i;:::-;29629:61;:::i;:::-;29616:74;;29538:158;;;:::o;29702:147::-;29797:45;29836:5;29797:45;:::i;:::-;29792:3;29785:58;29702:147;;:::o;29855:114::-;29922:6;29956:5;29950:12;29940:22;;29855:114;;;:::o;29975:184::-;30074:11;30108:6;30103:3;30096:19;30148:4;30143:3;30139:14;30124:29;;29975:184;;;;:::o;30165:132::-;30232:4;30255:3;30247:11;;30285:4;30280:3;30276:14;30268:22;;30165:132;;;:::o;30303:108::-;30380:24;30398:5;30380:24;:::i;:::-;30375:3;30368:37;30303:108;;:::o;30417:179::-;30486:10;30507:46;30549:3;30541:6;30507:46;:::i;:::-;30585:4;30580:3;30576:14;30562:28;;30417:179;;;;:::o;30602:113::-;30672:4;30704;30699:3;30695:14;30687:22;;30602:113;;;:::o;30751:732::-;30870:3;30899:54;30947:5;30899:54;:::i;:::-;30969:86;31048:6;31043:3;30969:86;:::i;:::-;30962:93;;31079:56;31129:5;31079:56;:::i;:::-;31158:7;31189:1;31174:284;31199:6;31196:1;31193:13;31174:284;;;31275:6;31269:13;31302:63;31361:3;31346:13;31302:63;:::i;:::-;31295:70;;31388:60;31441:6;31388:60;:::i;:::-;31378:70;;31234:224;31221:1;31218;31214:9;31209:14;;31174:284;;;31178:14;31474:3;31467:10;;30875:608;;;30751:732;;;;:::o;31489:831::-;31752:4;31790:3;31779:9;31775:19;31767:27;;31804:71;31872:1;31861:9;31857:17;31848:6;31804:71;:::i;:::-;31885:80;31961:2;31950:9;31946:18;31937:6;31885:80;:::i;:::-;32012:9;32006:4;32002:20;31997:2;31986:9;31982:18;31975:48;32040:108;32143:4;32134:6;32040:108;:::i;:::-;32032:116;;32158:72;32226:2;32215:9;32211:18;32202:6;32158:72;:::i;:::-;32240:73;32308:3;32297:9;32293:19;32284:6;32240:73;:::i;:::-;31489:831;;;;;;;;:::o;32326:807::-;32575:4;32613:3;32602:9;32598:19;32590:27;;32627:71;32695:1;32684:9;32680:17;32671:6;32627:71;:::i;:::-;32708:72;32776:2;32765:9;32761:18;32752:6;32708:72;:::i;:::-;32790:80;32866:2;32855:9;32851:18;32842:6;32790:80;:::i;:::-;32880;32956:2;32945:9;32941:18;32932:6;32880:80;:::i;:::-;32970:73;33038:3;33027:9;33023:19;33014:6;32970:73;:::i;:::-;33053;33121:3;33110:9;33106:19;33097:6;33053:73;:::i;:::-;32326:807;;;;;;;;;:::o;33139:663::-;33227:6;33235;33243;33292:2;33280:9;33271:7;33267:23;33263:32;33260:119;;;33298:79;;:::i;:::-;33260:119;33418:1;33443:64;33499:7;33490:6;33479:9;33475:22;33443:64;:::i;:::-;33433:74;;33389:128;33556:2;33582:64;33638:7;33629:6;33618:9;33614:22;33582:64;:::i;:::-;33572:74;;33527:129;33695:2;33721:64;33777:7;33768:6;33757:9;33753:22;33721:64;:::i;:::-;33711:74;;33666:129;33139:663;;;;;:::o;33808:442::-;33957:4;33995:2;33984:9;33980:18;33972:26;;34008:71;34076:1;34065:9;34061:17;34052:6;34008:71;:::i;:::-;34089:72;34157:2;34146:9;34142:18;34133:6;34089:72;:::i;:::-;34171;34239:2;34228:9;34224:18;34215:6;34171:72;:::i;:::-;33808:442;;;;;;:::o

Swarm Source

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