ETH Price: $2,504.66 (+1.25%)
 

Overview

Max Total Supply

1,000,000,000 ComfyM

Holders

40

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,269,015.575227154 ComfyM

Value
$0.00
0xB69ea652041Fc6f5C6E7A01594FeA5FDC6ab496F
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:
ComfyMoon

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-08
*/

/**

░█████╗░░█████╗░███╗░░░███╗███████╗██╗░░░██╗███╗░░░███╗░█████╗░░█████╗░███╗░░██╗
██╔══██╗██╔══██╗████╗░████║██╔════╝╚██╗░██╔╝████╗░████║██╔══██╗██╔══██╗████╗░██║
██║░░╚═╝██║░░██║██╔████╔██║█████╗░░░╚████╔╝░██╔████╔██║██║░░██║██║░░██║██╔██╗██║
██║░░██╗██║░░██║██║╚██╔╝██║██╔══╝░░░░╚██╔╝░░██║╚██╔╝██║██║░░██║██║░░██║██║╚████║
╚█████╔╝╚█████╔╝██║░╚═╝░██║██║░░░░░░░░██║░░░██║░╚═╝░██║╚█████╔╝╚█████╔╝██║░╚███║
░╚════╝░░╚════╝░╚═╝░░░░░╚═╝╚═╝░░░░░░░░╚═╝░░░╚═╝░░░░░╚═╝░╚════╝░░╚════╝░╚═╝░░╚══╝
Moon with comfort dear sirs, low tax 3/3, Locked, Renounced and safe - all in one place to take you to a comfortable MOON. 

https://comfymoon.live/
https://t.me/comfymoonofficial

*/

pragma solidity ^0.8.16;
// SPDX-License-Identifier: Unlicensed
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);
}

library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != - 1 || a != MIN_INT256);
        // Solidity already throws when dividing by 0.
        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? - a : a;
    }

    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}

library SafeMathUint {
    function toInt256Safe(uint256 a) internal pure returns (int256) {
        int256 b = int256(a);
        require(b >= 0);
        return b;
    }
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

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

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

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

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

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

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value : weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

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

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

}

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

interface IUniswapV2Router02 {

    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function WETH() external pure returns (address);
}

contract ComfyMoon is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapV2PairUSDC = address(0);
    address private _developmentOne = 0x0015CA252794142578e558C101eb2935D62D9552;
    address private _developmentTwo = 0x0015CA252794142578e558C101eb2935D62D9552;    
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    string private _name = "ComfyMoon";
    string private _symbol = "ComfyM";
    uint8 private _decimals = 9;
    uint256 private _tTotal = 1000000000 * 10 ** _decimals;
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    uint256 public usdcPriceToSwap = 100000000; //100 USDC
    uint256 public _maxWalletAmount = 30000001 * 10 ** _decimals;
    address public usdcAddress = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; //Mainnet
    
    IERC20 usdcToken = IERC20(usdcAddress);
   
    struct TaxFees {
        uint256 buyFee;
        uint256 sellFee;
    }

    bool private doTakeFees;
    bool private isSellTxn;
    TaxFees public taxFees;
     
    constructor () {
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        taxFees = TaxFees(40, 60); //just at launch to catch any bots
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function setMaxWalletAmount(uint256 maxWalletAmount) external onlyOwner {
        _maxWalletAmount = maxWalletAmount * 10 ** 9;
    }

    function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner {
        addRemoveFee(addresses, isExcludeFromFee);
    }

    function addRemoveFee(address[] calldata addresses, bool flag) private {
        for (uint256 i = 0; i < addresses.length; i++) {
            address addr = addresses[i];
            _isExcludedFromFee[addr] = flag;
        }
    }

    function setWalletAddresses(address developmentOne, address developmentTwo) external onlyOwner {
        _developmentOne = developmentOne;
        _developmentTwo = developmentTwo;
    }

    function setTaxFees(uint256 buyFee, uint256 sellFee) external onlyOwner {
        taxFees.buyFee = buyFee;
        taxFees.sellFee = sellFee;
    }

    function openTrading() external onlyOwner {
        require(uniswapV2PairUSDC == address(0),"UniswapV2Pair has already been set");
        uniswapV2PairUSDC = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), usdcAddress);
    }
    
    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(uniswapV2PairUSDC != address(0),"UniswapV2Pair has not been set");
        bool isSell = false;
        bool takeFees = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner();
        uint256 holderBalance = balanceOf(to).add(amount);
        
        if (from == uniswapV2PairUSDC) {
            require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
        }
        if (from != uniswapV2PairUSDC && to == uniswapV2PairUSDC) {//if sell
            //only tax if tokens are going back to Uniswap
            isSell = true;
            sellTokens();
        }
        if (from != uniswapV2PairUSDC && to != uniswapV2PairUSDC) {
            require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
        }
        _tokenTransfer(from, to, amount, takeFees, isSell);
    }

    function claimTokens() external {
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            if (!inSwapAndLiquify && swapAndLiquifyEnabled) {
                swapTokens(contractTokenBalance);
            }
        }
    }

    function sellTokens() private {
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            uint256 tokenAmount = getTokenAmountByUSDCPrice();
            if (contractTokenBalance >= tokenAmount && !inSwapAndLiquify && swapAndLiquifyEnabled) {
                swapTokens(tokenAmount);
            }
        }
    }
    function swapTokens(uint256 tokenAmount) private lockTheSwap {
        address[] memory path;
        path = new address[](3);
        path[0] = address(this);
        path[1] = usdcAddress;
        path[2] = uniswapV2Router.WETH();
        // Approve the swap first
        _approve(address(this), address(uniswapV2Router), tokenAmount);
         uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
        
        uint256 ethBalance = address(this).balance;
        uint256 halfShare = ethBalance.div(2);  
        payable(_developmentOne).transfer(halfShare);
        payable(_developmentTwo).transfer(halfShare);  

    }

    function getTokenAmountByUSDCPrice() public view returns (uint256)  {
        address[] memory path = new address[](2);
        path[0] = usdcAddress;
        path[1] = address(this);
        return uniswapV2Router.getAmountsOut(usdcPriceToSwap, path)[1];
    }

    function setUSDCPriceToSwap(uint256 usdcPriceToSwap_) external onlyOwner {
        usdcPriceToSwap = usdcPriceToSwap_;
    }

    receive() external payable {}

    function sendEthBack() external {
        uint256 ethBalance = address(this).balance;
        payable(_developmentOne).transfer(ethBalance);
    }

    function extractERC20Tokens(address contractAddress) external {
        IERC20 erc20Token = IERC20(contractAddress);
        uint256 balance = erc20Token.balanceOf(address(this));
        erc20Token.transfer(_developmentOne, balance);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount,
        bool takeFees, bool isSell) private {
        uint256 taxAmount = takeFees ? amount.mul(taxFees.buyFee).div(100) : 0;
        if (takeFees && isSell) {
            taxAmount = amount.mul(taxFees.sellFee).div(100);
        }
        uint256 transferAmount = amount.sub(taxAmount);
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(transferAmount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        emit Transfer(sender, recipient, amount);
    }
}

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":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimTokens","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":"addresses","type":"address[]"},{"internalType":"bool","name":"isExcludeFromFee","type":"bool"}],"name":"excludeIncludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"extractERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTokenAmountByUSDCPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"sendEthBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"setTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"usdcPriceToSwap_","type":"uint256"}],"name":"setUSDCPriceToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"developmentOne","type":"address"},{"internalType":"address","name":"developmentTwo","type":"address"}],"name":"setWalletAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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":"taxFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","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":"uniswapV2PairUSDC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdcAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdcPriceToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507215ca252794142578e558c101eb2935d62d9552600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507215ca252794142578e558c101eb2935d62d9552600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600981526020017f436f6d66794d6f6f6e00000000000000000000000000000000000000000000008152506008908162000189919062000858565b506040518060400160405280600681526020017f436f6d66794d000000000000000000000000000000000000000000000000000081525060099081620001d0919062000858565b506009600a60006101000a81548160ff021916908360ff160217905550600a60009054906101000a900460ff16600a6200020b919062000acf565b633b9aca006200021c919062000b20565b600b556001600c60016101000a81548160ff0219169083151502179055506305f5e100600d55600a60009054906101000a900460ff16600a62000260919062000acf565b6301c9c38162000271919062000b20565b600e5573a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200033957600080fd5b5060006200034c620005ad60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600b546005600062000401620005ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016007600062000455620005b560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550604051806040016040528060288152602001603c815250601160008201518160000155602082015181600101559050506200053e620005ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200059f919062000b92565b60405180910390a362000baf565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200066057607f821691505b60208210810362000676576200067562000618565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006a1565b620006ec8683620006a1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000739620007336200072d8462000704565b6200070e565b62000704565b9050919050565b6000819050919050565b620007558362000718565b6200076d620007648262000740565b848454620006ae565b825550505050565b600090565b6200078462000775565b620007918184846200074a565b505050565b5b81811015620007b957620007ad6000826200077a565b60018101905062000797565b5050565b601f8211156200080857620007d2816200067c565b620007dd8462000691565b81016020851015620007ed578190505b62000805620007fc8562000691565b83018262000796565b50505b505050565b600082821c905092915050565b60006200082d600019846008026200080d565b1980831691505092915050565b60006200084883836200081a565b9150826002028217905092915050565b6200086382620005de565b67ffffffffffffffff8111156200087f576200087e620005e9565b5b6200088b825462000647565b62000898828285620007bd565b600060209050601f831160018114620008d05760008415620008bb578287015190505b620008c785826200083a565b86555062000937565b601f198416620008e0866200067c565b60005b828110156200090a57848901518255600182019150602085019450602081019050620008e3565b868310156200092a578489015162000926601f8916826200081a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009cd57808604811115620009a557620009a46200093f565b5b6001851615620009b55780820291505b8081029050620009c5856200096e565b945062000985565b94509492505050565b600082620009e8576001905062000abb565b81620009f8576000905062000abb565b816001811462000a11576002811462000a1c5762000a52565b600191505062000abb565b60ff84111562000a315762000a306200093f565b5b8360020a91508482111562000a4b5762000a4a6200093f565b5b5062000abb565b5060208310610133831016604e8410600b841016171562000a8c5782820a90508381111562000a865762000a856200093f565b5b62000abb565b62000a9b84848460016200097b565b9250905081840481111562000ab55762000ab46200093f565b5b81810290505b9392505050565b600060ff82169050919050565b600062000adc8262000704565b915062000ae98362000ac2565b925062000b187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009d6565b905092915050565b600062000b2d8262000704565b915062000b3a8362000704565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b765762000b756200093f565b5b828202905092915050565b62000b8c8162000704565b82525050565b600060208201905062000ba9600083018462000b81565b92915050565b613f208062000bbf6000396000f3fe6080604052600436106101f25760003560e01c806363373b871161010d57806395d89b41116100a0578063c9567bf91161006f578063c9567bf9146106fb578063dd62ed3e14610712578063e0fb0f351461074f578063f2fde38b14610766578063fd828d7e1461078f576101f9565b806395d89b411461062d578063a457c2d714610658578063a9059cbb14610695578063c49b9a80146106d2576101f9565b806381230a83116100dc57806381230a831461058557806388847825146105ae5780638da5cb5b146105d757806394dbaaba14610602576101f9565b806363373b87146104dd5780636c0a24eb1461050657806370a0823114610531578063715018a61461056e576101f9565b80632fbabc7511610185578063441d801f11610154578063441d801f1461043557806348c54b9d1461045e5780634a74bb02146104755780635342acb4146104a0576101f9565b80632fbabc7514610379578063313ce567146103a257806339509351146103cd578063433a40491461040a576101f9565b80631694505e116101c15780631694505e146102bd57806318160ddd146102e857806323b872dd1461031357806327a14fc214610350576101f9565b806302d45457146101fe57806306fdde0314610229578063095ea7b3146102545780630ddc097614610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107ba565b6040516102209190612ce5565b60405180910390f35b34801561023557600080fd5b5061023e6107e0565b60405161024b9190612d90565b60405180910390f35b34801561026057600080fd5b5061027b60048036038101906102769190612e28565b610872565b6040516102889190612e83565b60405180910390f35b34801561029d57600080fd5b506102a6610890565b6040516102b4929190612ead565b60405180910390f35b3480156102c957600080fd5b506102d26108a2565b6040516102df9190612f35565b60405180910390f35b3480156102f457600080fd5b506102fd6108c8565b60405161030a9190612f50565b60405180910390f35b34801561031f57600080fd5b5061033a60048036038101906103359190612f6b565b6108d2565b6040516103479190612e83565b60405180910390f35b34801561035c57600080fd5b5061037760048036038101906103729190612fbe565b6109ab565b005b34801561038557600080fd5b506103a0600480360381019061039b9190612fbe565b610a59565b005b3480156103ae57600080fd5b506103b7610af8565b6040516103c49190613007565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190612e28565b610b0f565b6040516104019190612e83565b60405180910390f35b34801561041657600080fd5b5061041f610bc2565b60405161042c9190612ce5565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906130b3565b610be8565b005b34801561046a57600080fd5b50610473610c8d565b005b34801561048157600080fd5b5061048a610cdf565b6040516104979190612e83565b60405180910390f35b3480156104ac57600080fd5b506104c760048036038101906104c29190613113565b610cf2565b6040516104d49190612e83565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff9190613113565b610d48565b005b34801561051257600080fd5b5061051b610e71565b6040516105289190612f50565b60405180910390f35b34801561053d57600080fd5b5061055860048036038101906105539190613113565b610e77565b6040516105659190612f50565b60405180910390f35b34801561057a57600080fd5b50610583610ec0565b005b34801561059157600080fd5b506105ac60048036038101906105a79190613140565b611013565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190613180565b6110c0565b005b3480156105e357600080fd5b506105ec6111db565b6040516105f99190612ce5565b60405180910390f35b34801561060e57600080fd5b50610617611204565b6040516106249190612f50565b60405180910390f35b34801561063957600080fd5b5061064261120a565b60405161064f9190612d90565b60405180910390f35b34801561066457600080fd5b5061067f600480360381019061067a9190612e28565b61129c565b60405161068c9190612e83565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b79190612e28565b611369565b6040516106c99190612e83565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f491906131c0565b611387565b005b34801561070757600080fd5b50610710611470565b005b34801561071e57600080fd5b5061073960048036038101906107349190613180565b611708565b6040516107469190612f50565b60405180910390f35b34801561075b57600080fd5b5061076461178f565b005b34801561077257600080fd5b5061078d60048036038101906107889190613113565b611800565b005b34801561079b57600080fd5b506107a46119c1565b6040516107b19190612f50565b60405180910390f35b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600880546107ef9061321c565b80601f016020809104026020016040519081016040528092919081815260200182805461081b9061321c565b80156108685780601f1061083d57610100808354040283529160200191610868565b820191906000526020600020905b81548152906001019060200180831161084b57829003601f168201915b5050505050905090565b600061088661087f611b96565b8484611b9e565b6001905092915050565b60118060000154908060010154905082565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b60006108df848484611d67565b6109a0846108eb611b96565b61099b85604051806060016040528060288152602001613e9e60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610951611b96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122c39092919063ffffffff16565b611b9e565b600190509392505050565b6109b3611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3790613299565b60405180910390fd5b633b9aca0081610a5091906132e8565b600e8190555050565b610a61611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae590613299565b60405180910390fd5b80600d8190555050565b6000600a60009054906101000a900460ff16905090565b6000610bb8610b1c611b96565b84610bb38560066000610b2d611b96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232790919063ffffffff16565b611b9e565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bf0611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490613299565b60405180910390fd5b610c88838383612385565b505050565b6000610c9830610e77565b90506000811115610cdc57600c60009054906101000a900460ff16158015610ccc5750600c60019054906101000a900460ff165b15610cdb57610cda81612430565b5b5b50565b600c60019054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d889190612ce5565b602060405180830381865afa158015610da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc99190613357565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e28929190613384565b6020604051808303816000875af1158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b91906133c2565b50505050565b600e5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ec8611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90613299565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61101b611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f90613299565b60405180910390fd5b81601160000181905550806011600101819055505050565b6110c8611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114c90613299565b60405180910390fd5b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5481565b6060600980546112199061321c565b80601f01602080910402602001604051908101604052809291908181526020018280546112459061321c565b80156112925780601f1061126757610100808354040283529160200191611292565b820191906000526020600020905b81548152906001019060200180831161127557829003601f168201915b5050505050905090565b600061135f6112a9611b96565b8461135a85604051806060016040528060258152602001613ec660259139600660006112d3611b96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122c39092919063ffffffff16565b611b9e565b6001905092915050565b600061137d611376611b96565b8484611d67565b6001905092915050565b61138f611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390613299565b60405180910390fd5b80600c60016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516114659190612e83565b60405180910390a150565b611478611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc90613299565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d90613461565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116279190613496565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016116839291906134c3565b6020604051808303816000875af11580156116a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c69190613496565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000479050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156117fc573d6000803e3d6000fd5b5050565b611808611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c90613299565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fb9061355e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600267ffffffffffffffff8111156119df576119de61357e565b5b604051908082528060200260200182016040528015611a0d5781602001602082028036833780820191505090505b509050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110611a4757611a466135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110611a9657611a956135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600d54836040518363ffffffff1660e01b8152600401611b2f92919061369a565b600060405180830381865afa158015611b4c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611b7591906137d9565b600181518110611b8857611b876135ad565b5b602002602001015191505090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0490613894565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7390613926565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d5a9190612f50565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcd906139b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3c90613a4a565b60405180910390fd5b60008111611e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7f90613adc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1090613b48565b60405180910390fd5b600080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fc05750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fff5750611fcf6111db565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561203e575061200e6111db565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b9050600061205d8461204f87610e77565b61232790919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036120fa57600e548111156120f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f090613bda565b60405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156121a55750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b156121b757600192506121b661280b565b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156122635750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156122ae57600e548111156122ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a490613bda565b60405180910390fd5b5b6122bb8686868587612876565b505050505050565b600083831115829061230b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123029190612d90565b60405180910390fd5b506000838561231a9190613bfa565b9050809150509392505050565b60008082846123369190613c2e565b90508381101561237b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237290613cae565b60405180910390fd5b8091505092915050565b60005b8383905081101561242a5760008484838181106123a8576123a76135ad565b5b90506020020160208101906123bd9190613113565b905082600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061242290613cce565b915050612388565b50505050565b6001600c60006101000a81548160ff0219169083151502179055506060600367ffffffffffffffff8111156124685761246761357e565b5b6040519080825280602002602001820160405280156124965781602001602082028036833780820191505090505b50905030816000815181106124ae576124ad6135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061251f5761251e6135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ea9190613496565b816002815181106125fe576125fd6135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061266530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b9e565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126c9959493929190613d51565b600060405180830381600087803b1580156126e357600080fd5b505af11580156126f7573d6000803e3d6000fd5b5050505060004790506000612716600283612b3390919063ffffffff16565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612780573d6000803e3d6000fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156127e9573d6000803e3d6000fd5b505050506000600c60006101000a81548160ff02191690831515021790555050565b600061281630610e77565b9050600081111561287357600061282b6119c1565b905080821015801561284a5750600c60009054906101000a900460ff16155b80156128625750600c60019054906101000a900460ff165b156128715761287081612430565b5b505b50565b6000826128845760006128b0565b6128af60646128a160116000015487612b7d90919063ffffffff16565b612b3390919063ffffffff16565b5b90508280156128bc5750815b156128ef576128ec60646128de60116001015487612b7d90919063ffffffff16565b612b3390919063ffffffff16565b90505b60006129048286612bf790919063ffffffff16565b905061295885600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bf790919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129ed81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232790919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a8282600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612b229190612f50565b60405180910390a350505050505050565b6000612b7583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c41565b905092915050565b6000808303612b8f5760009050612bf1565b60008284612b9d91906132e8565b9050828482612bac9190613dda565b14612bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be390613e7d565b60405180910390fd5b809150505b92915050565b6000612c3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122c3565b905092915050565b60008083118290612c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7f9190612d90565b60405180910390fd5b5060008385612c979190613dda565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ccf82612ca4565b9050919050565b612cdf81612cc4565b82525050565b6000602082019050612cfa6000830184612cd6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d3a578082015181840152602081019050612d1f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d6282612d00565b612d6c8185612d0b565b9350612d7c818560208601612d1c565b612d8581612d46565b840191505092915050565b60006020820190508181036000830152612daa8184612d57565b905092915050565b6000604051905090565b600080fd5b600080fd5b612dcf81612cc4565b8114612dda57600080fd5b50565b600081359050612dec81612dc6565b92915050565b6000819050919050565b612e0581612df2565b8114612e1057600080fd5b50565b600081359050612e2281612dfc565b92915050565b60008060408385031215612e3f57612e3e612dbc565b5b6000612e4d85828601612ddd565b9250506020612e5e85828601612e13565b9150509250929050565b60008115159050919050565b612e7d81612e68565b82525050565b6000602082019050612e986000830184612e74565b92915050565b612ea781612df2565b82525050565b6000604082019050612ec26000830185612e9e565b612ecf6020830184612e9e565b9392505050565b6000819050919050565b6000612efb612ef6612ef184612ca4565b612ed6565b612ca4565b9050919050565b6000612f0d82612ee0565b9050919050565b6000612f1f82612f02565b9050919050565b612f2f81612f14565b82525050565b6000602082019050612f4a6000830184612f26565b92915050565b6000602082019050612f656000830184612e9e565b92915050565b600080600060608486031215612f8457612f83612dbc565b5b6000612f9286828701612ddd565b9350506020612fa386828701612ddd565b9250506040612fb486828701612e13565b9150509250925092565b600060208284031215612fd457612fd3612dbc565b5b6000612fe284828501612e13565b91505092915050565b600060ff82169050919050565b61300181612feb565b82525050565b600060208201905061301c6000830184612ff8565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261304757613046613022565b5b8235905067ffffffffffffffff81111561306457613063613027565b5b6020830191508360208202830111156130805761307f61302c565b5b9250929050565b61309081612e68565b811461309b57600080fd5b50565b6000813590506130ad81613087565b92915050565b6000806000604084860312156130cc576130cb612dbc565b5b600084013567ffffffffffffffff8111156130ea576130e9612dc1565b5b6130f686828701613031565b935093505060206131098682870161309e565b9150509250925092565b60006020828403121561312957613128612dbc565b5b600061313784828501612ddd565b91505092915050565b6000806040838503121561315757613156612dbc565b5b600061316585828601612e13565b925050602061317685828601612e13565b9150509250929050565b6000806040838503121561319757613196612dbc565b5b60006131a585828601612ddd565b92505060206131b685828601612ddd565b9150509250929050565b6000602082840312156131d6576131d5612dbc565b5b60006131e48482850161309e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061323457607f821691505b602082108103613247576132466131ed565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613283602083612d0b565b915061328e8261324d565b602082019050919050565b600060208201905081810360008301526132b281613276565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132f382612df2565b91506132fe83612df2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613337576133366132b9565b5b828202905092915050565b60008151905061335181612dfc565b92915050565b60006020828403121561336d5761336c612dbc565b5b600061337b84828501613342565b91505092915050565b60006040820190506133996000830185612cd6565b6133a66020830184612e9e565b9392505050565b6000815190506133bc81613087565b92915050565b6000602082840312156133d8576133d7612dbc565b5b60006133e6848285016133ad565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b600061344b602283612d0b565b9150613456826133ef565b604082019050919050565b6000602082019050818103600083015261347a8161343e565b9050919050565b60008151905061349081612dc6565b92915050565b6000602082840312156134ac576134ab612dbc565b5b60006134ba84828501613481565b91505092915050565b60006040820190506134d86000830185612cd6565b6134e56020830184612cd6565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613548602683612d0b565b9150613553826134ec565b604082019050919050565b600060208201905081810360008301526135778161353b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61361181612cc4565b82525050565b60006136238383613608565b60208301905092915050565b6000602082019050919050565b6000613647826135dc565b61365181856135e7565b935061365c836135f8565b8060005b8381101561368d5781516136748882613617565b975061367f8361362f565b925050600181019050613660565b5085935050505092915050565b60006040820190506136af6000830185612e9e565b81810360208301526136c1818461363c565b90509392505050565b6136d382612d46565b810181811067ffffffffffffffff821117156136f2576136f161357e565b5b80604052505050565b6000613705612db2565b905061371182826136ca565b919050565b600067ffffffffffffffff8211156137315761373061357e565b5b602082029050602081019050919050565b600061375561375084613716565b6136fb565b905080838252602082019050602084028301858111156137785761377761302c565b5b835b818110156137a1578061378d8882613342565b84526020840193505060208101905061377a565b5050509392505050565b600082601f8301126137c0576137bf613022565b5b81516137d0848260208601613742565b91505092915050565b6000602082840312156137ef576137ee612dbc565b5b600082015167ffffffffffffffff81111561380d5761380c612dc1565b5b613819848285016137ab565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061387e602483612d0b565b915061388982613822565b604082019050919050565b600060208201905081810360008301526138ad81613871565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613910602283612d0b565b915061391b826138b4565b604082019050919050565b6000602082019050818103600083015261393f81613903565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139a2602583612d0b565b91506139ad82613946565b604082019050919050565b600060208201905081810360008301526139d181613995565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a34602383612d0b565b9150613a3f826139d8565b604082019050919050565b60006020820190508181036000830152613a6381613a27565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613ac6602983612d0b565b9150613ad182613a6a565b604082019050919050565b60006020820190508181036000830152613af581613ab9565b9050919050565b7f556e697377617056325061697220686173206e6f74206265656e207365740000600082015250565b6000613b32601e83612d0b565b9150613b3d82613afc565b602082019050919050565b60006020820190508181036000830152613b6181613b25565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b6000613bc4602583612d0b565b9150613bcf82613b68565b604082019050919050565b60006020820190508181036000830152613bf381613bb7565b9050919050565b6000613c0582612df2565b9150613c1083612df2565b9250828203905081811115613c2857613c276132b9565b5b92915050565b6000613c3982612df2565b9150613c4483612df2565b9250828201905080821115613c5c57613c5b6132b9565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c98601b83612d0b565b9150613ca382613c62565b602082019050919050565b60006020820190508181036000830152613cc781613c8b565b9050919050565b6000613cd982612df2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d0b57613d0a6132b9565b5b600182019050919050565b6000819050919050565b6000613d3b613d36613d3184613d16565b612ed6565b612df2565b9050919050565b613d4b81613d20565b82525050565b600060a082019050613d666000830188612e9e565b613d736020830187613d42565b8181036040830152613d85818661363c565b9050613d946060830185612cd6565b613da16080830184612e9e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613de582612df2565b9150613df083612df2565b925082613e0057613dff613dab565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e67602183612d0b565b9150613e7282613e0b565b604082019050919050565b60006020820190508181036000830152613e9681613e5a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e31a54ad36578d5d5f8fe5d81cfd4be8b08895f2e905ab73184841b1a441455c64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c806363373b871161010d57806395d89b41116100a0578063c9567bf91161006f578063c9567bf9146106fb578063dd62ed3e14610712578063e0fb0f351461074f578063f2fde38b14610766578063fd828d7e1461078f576101f9565b806395d89b411461062d578063a457c2d714610658578063a9059cbb14610695578063c49b9a80146106d2576101f9565b806381230a83116100dc57806381230a831461058557806388847825146105ae5780638da5cb5b146105d757806394dbaaba14610602576101f9565b806363373b87146104dd5780636c0a24eb1461050657806370a0823114610531578063715018a61461056e576101f9565b80632fbabc7511610185578063441d801f11610154578063441d801f1461043557806348c54b9d1461045e5780634a74bb02146104755780635342acb4146104a0576101f9565b80632fbabc7514610379578063313ce567146103a257806339509351146103cd578063433a40491461040a576101f9565b80631694505e116101c15780631694505e146102bd57806318160ddd146102e857806323b872dd1461031357806327a14fc214610350576101f9565b806302d45457146101fe57806306fdde0314610229578063095ea7b3146102545780630ddc097614610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107ba565b6040516102209190612ce5565b60405180910390f35b34801561023557600080fd5b5061023e6107e0565b60405161024b9190612d90565b60405180910390f35b34801561026057600080fd5b5061027b60048036038101906102769190612e28565b610872565b6040516102889190612e83565b60405180910390f35b34801561029d57600080fd5b506102a6610890565b6040516102b4929190612ead565b60405180910390f35b3480156102c957600080fd5b506102d26108a2565b6040516102df9190612f35565b60405180910390f35b3480156102f457600080fd5b506102fd6108c8565b60405161030a9190612f50565b60405180910390f35b34801561031f57600080fd5b5061033a60048036038101906103359190612f6b565b6108d2565b6040516103479190612e83565b60405180910390f35b34801561035c57600080fd5b5061037760048036038101906103729190612fbe565b6109ab565b005b34801561038557600080fd5b506103a0600480360381019061039b9190612fbe565b610a59565b005b3480156103ae57600080fd5b506103b7610af8565b6040516103c49190613007565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190612e28565b610b0f565b6040516104019190612e83565b60405180910390f35b34801561041657600080fd5b5061041f610bc2565b60405161042c9190612ce5565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906130b3565b610be8565b005b34801561046a57600080fd5b50610473610c8d565b005b34801561048157600080fd5b5061048a610cdf565b6040516104979190612e83565b60405180910390f35b3480156104ac57600080fd5b506104c760048036038101906104c29190613113565b610cf2565b6040516104d49190612e83565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff9190613113565b610d48565b005b34801561051257600080fd5b5061051b610e71565b6040516105289190612f50565b60405180910390f35b34801561053d57600080fd5b5061055860048036038101906105539190613113565b610e77565b6040516105659190612f50565b60405180910390f35b34801561057a57600080fd5b50610583610ec0565b005b34801561059157600080fd5b506105ac60048036038101906105a79190613140565b611013565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190613180565b6110c0565b005b3480156105e357600080fd5b506105ec6111db565b6040516105f99190612ce5565b60405180910390f35b34801561060e57600080fd5b50610617611204565b6040516106249190612f50565b60405180910390f35b34801561063957600080fd5b5061064261120a565b60405161064f9190612d90565b60405180910390f35b34801561066457600080fd5b5061067f600480360381019061067a9190612e28565b61129c565b60405161068c9190612e83565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b79190612e28565b611369565b6040516106c99190612e83565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f491906131c0565b611387565b005b34801561070757600080fd5b50610710611470565b005b34801561071e57600080fd5b5061073960048036038101906107349190613180565b611708565b6040516107469190612f50565b60405180910390f35b34801561075b57600080fd5b5061076461178f565b005b34801561077257600080fd5b5061078d60048036038101906107889190613113565b611800565b005b34801561079b57600080fd5b506107a46119c1565b6040516107b19190612f50565b60405180910390f35b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600880546107ef9061321c565b80601f016020809104026020016040519081016040528092919081815260200182805461081b9061321c565b80156108685780601f1061083d57610100808354040283529160200191610868565b820191906000526020600020905b81548152906001019060200180831161084b57829003601f168201915b5050505050905090565b600061088661087f611b96565b8484611b9e565b6001905092915050565b60118060000154908060010154905082565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b60006108df848484611d67565b6109a0846108eb611b96565b61099b85604051806060016040528060288152602001613e9e60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610951611b96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122c39092919063ffffffff16565b611b9e565b600190509392505050565b6109b3611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3790613299565b60405180910390fd5b633b9aca0081610a5091906132e8565b600e8190555050565b610a61611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae590613299565b60405180910390fd5b80600d8190555050565b6000600a60009054906101000a900460ff16905090565b6000610bb8610b1c611b96565b84610bb38560066000610b2d611b96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232790919063ffffffff16565b611b9e565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bf0611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490613299565b60405180910390fd5b610c88838383612385565b505050565b6000610c9830610e77565b90506000811115610cdc57600c60009054906101000a900460ff16158015610ccc5750600c60019054906101000a900460ff165b15610cdb57610cda81612430565b5b5b50565b600c60019054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d889190612ce5565b602060405180830381865afa158015610da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc99190613357565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e28929190613384565b6020604051808303816000875af1158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b91906133c2565b50505050565b600e5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ec8611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90613299565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61101b611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f90613299565b60405180910390fd5b81601160000181905550806011600101819055505050565b6110c8611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114c90613299565b60405180910390fd5b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5481565b6060600980546112199061321c565b80601f01602080910402602001604051908101604052809291908181526020018280546112459061321c565b80156112925780601f1061126757610100808354040283529160200191611292565b820191906000526020600020905b81548152906001019060200180831161127557829003601f168201915b5050505050905090565b600061135f6112a9611b96565b8461135a85604051806060016040528060258152602001613ec660259139600660006112d3611b96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122c39092919063ffffffff16565b611b9e565b6001905092915050565b600061137d611376611b96565b8484611d67565b6001905092915050565b61138f611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390613299565b60405180910390fd5b80600c60016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516114659190612e83565b60405180910390a150565b611478611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc90613299565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d90613461565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116279190613496565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016116839291906134c3565b6020604051808303816000875af11580156116a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c69190613496565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000479050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156117fc573d6000803e3d6000fd5b5050565b611808611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c90613299565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fb9061355e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600267ffffffffffffffff8111156119df576119de61357e565b5b604051908082528060200260200182016040528015611a0d5781602001602082028036833780820191505090505b509050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110611a4757611a466135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110611a9657611a956135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600d54836040518363ffffffff1660e01b8152600401611b2f92919061369a565b600060405180830381865afa158015611b4c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611b7591906137d9565b600181518110611b8857611b876135ad565b5b602002602001015191505090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0490613894565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7390613926565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d5a9190612f50565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcd906139b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3c90613a4a565b60405180910390fd5b60008111611e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7f90613adc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1090613b48565b60405180910390fd5b600080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fc05750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fff5750611fcf6111db565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561203e575061200e6111db565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b9050600061205d8461204f87610e77565b61232790919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036120fa57600e548111156120f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f090613bda565b60405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156121a55750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b156121b757600192506121b661280b565b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156122635750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156122ae57600e548111156122ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a490613bda565b60405180910390fd5b5b6122bb8686868587612876565b505050505050565b600083831115829061230b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123029190612d90565b60405180910390fd5b506000838561231a9190613bfa565b9050809150509392505050565b60008082846123369190613c2e565b90508381101561237b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237290613cae565b60405180910390fd5b8091505092915050565b60005b8383905081101561242a5760008484838181106123a8576123a76135ad565b5b90506020020160208101906123bd9190613113565b905082600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061242290613cce565b915050612388565b50505050565b6001600c60006101000a81548160ff0219169083151502179055506060600367ffffffffffffffff8111156124685761246761357e565b5b6040519080825280602002602001820160405280156124965781602001602082028036833780820191505090505b50905030816000815181106124ae576124ad6135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061251f5761251e6135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ea9190613496565b816002815181106125fe576125fd6135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061266530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b9e565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126c9959493929190613d51565b600060405180830381600087803b1580156126e357600080fd5b505af11580156126f7573d6000803e3d6000fd5b5050505060004790506000612716600283612b3390919063ffffffff16565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612780573d6000803e3d6000fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156127e9573d6000803e3d6000fd5b505050506000600c60006101000a81548160ff02191690831515021790555050565b600061281630610e77565b9050600081111561287357600061282b6119c1565b905080821015801561284a5750600c60009054906101000a900460ff16155b80156128625750600c60019054906101000a900460ff165b156128715761287081612430565b5b505b50565b6000826128845760006128b0565b6128af60646128a160116000015487612b7d90919063ffffffff16565b612b3390919063ffffffff16565b5b90508280156128bc5750815b156128ef576128ec60646128de60116001015487612b7d90919063ffffffff16565b612b3390919063ffffffff16565b90505b60006129048286612bf790919063ffffffff16565b905061295885600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bf790919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129ed81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232790919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a8282600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612b229190612f50565b60405180910390a350505050505050565b6000612b7583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c41565b905092915050565b6000808303612b8f5760009050612bf1565b60008284612b9d91906132e8565b9050828482612bac9190613dda565b14612bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be390613e7d565b60405180910390fd5b809150505b92915050565b6000612c3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122c3565b905092915050565b60008083118290612c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7f9190612d90565b60405180910390fd5b5060008385612c979190613dda565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ccf82612ca4565b9050919050565b612cdf81612cc4565b82525050565b6000602082019050612cfa6000830184612cd6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d3a578082015181840152602081019050612d1f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d6282612d00565b612d6c8185612d0b565b9350612d7c818560208601612d1c565b612d8581612d46565b840191505092915050565b60006020820190508181036000830152612daa8184612d57565b905092915050565b6000604051905090565b600080fd5b600080fd5b612dcf81612cc4565b8114612dda57600080fd5b50565b600081359050612dec81612dc6565b92915050565b6000819050919050565b612e0581612df2565b8114612e1057600080fd5b50565b600081359050612e2281612dfc565b92915050565b60008060408385031215612e3f57612e3e612dbc565b5b6000612e4d85828601612ddd565b9250506020612e5e85828601612e13565b9150509250929050565b60008115159050919050565b612e7d81612e68565b82525050565b6000602082019050612e986000830184612e74565b92915050565b612ea781612df2565b82525050565b6000604082019050612ec26000830185612e9e565b612ecf6020830184612e9e565b9392505050565b6000819050919050565b6000612efb612ef6612ef184612ca4565b612ed6565b612ca4565b9050919050565b6000612f0d82612ee0565b9050919050565b6000612f1f82612f02565b9050919050565b612f2f81612f14565b82525050565b6000602082019050612f4a6000830184612f26565b92915050565b6000602082019050612f656000830184612e9e565b92915050565b600080600060608486031215612f8457612f83612dbc565b5b6000612f9286828701612ddd565b9350506020612fa386828701612ddd565b9250506040612fb486828701612e13565b9150509250925092565b600060208284031215612fd457612fd3612dbc565b5b6000612fe284828501612e13565b91505092915050565b600060ff82169050919050565b61300181612feb565b82525050565b600060208201905061301c6000830184612ff8565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261304757613046613022565b5b8235905067ffffffffffffffff81111561306457613063613027565b5b6020830191508360208202830111156130805761307f61302c565b5b9250929050565b61309081612e68565b811461309b57600080fd5b50565b6000813590506130ad81613087565b92915050565b6000806000604084860312156130cc576130cb612dbc565b5b600084013567ffffffffffffffff8111156130ea576130e9612dc1565b5b6130f686828701613031565b935093505060206131098682870161309e565b9150509250925092565b60006020828403121561312957613128612dbc565b5b600061313784828501612ddd565b91505092915050565b6000806040838503121561315757613156612dbc565b5b600061316585828601612e13565b925050602061317685828601612e13565b9150509250929050565b6000806040838503121561319757613196612dbc565b5b60006131a585828601612ddd565b92505060206131b685828601612ddd565b9150509250929050565b6000602082840312156131d6576131d5612dbc565b5b60006131e48482850161309e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061323457607f821691505b602082108103613247576132466131ed565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613283602083612d0b565b915061328e8261324d565b602082019050919050565b600060208201905081810360008301526132b281613276565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132f382612df2565b91506132fe83612df2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613337576133366132b9565b5b828202905092915050565b60008151905061335181612dfc565b92915050565b60006020828403121561336d5761336c612dbc565b5b600061337b84828501613342565b91505092915050565b60006040820190506133996000830185612cd6565b6133a66020830184612e9e565b9392505050565b6000815190506133bc81613087565b92915050565b6000602082840312156133d8576133d7612dbc565b5b60006133e6848285016133ad565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b600061344b602283612d0b565b9150613456826133ef565b604082019050919050565b6000602082019050818103600083015261347a8161343e565b9050919050565b60008151905061349081612dc6565b92915050565b6000602082840312156134ac576134ab612dbc565b5b60006134ba84828501613481565b91505092915050565b60006040820190506134d86000830185612cd6565b6134e56020830184612cd6565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613548602683612d0b565b9150613553826134ec565b604082019050919050565b600060208201905081810360008301526135778161353b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61361181612cc4565b82525050565b60006136238383613608565b60208301905092915050565b6000602082019050919050565b6000613647826135dc565b61365181856135e7565b935061365c836135f8565b8060005b8381101561368d5781516136748882613617565b975061367f8361362f565b925050600181019050613660565b5085935050505092915050565b60006040820190506136af6000830185612e9e565b81810360208301526136c1818461363c565b90509392505050565b6136d382612d46565b810181811067ffffffffffffffff821117156136f2576136f161357e565b5b80604052505050565b6000613705612db2565b905061371182826136ca565b919050565b600067ffffffffffffffff8211156137315761373061357e565b5b602082029050602081019050919050565b600061375561375084613716565b6136fb565b905080838252602082019050602084028301858111156137785761377761302c565b5b835b818110156137a1578061378d8882613342565b84526020840193505060208101905061377a565b5050509392505050565b600082601f8301126137c0576137bf613022565b5b81516137d0848260208601613742565b91505092915050565b6000602082840312156137ef576137ee612dbc565b5b600082015167ffffffffffffffff81111561380d5761380c612dc1565b5b613819848285016137ab565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061387e602483612d0b565b915061388982613822565b604082019050919050565b600060208201905081810360008301526138ad81613871565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613910602283612d0b565b915061391b826138b4565b604082019050919050565b6000602082019050818103600083015261393f81613903565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139a2602583612d0b565b91506139ad82613946565b604082019050919050565b600060208201905081810360008301526139d181613995565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a34602383612d0b565b9150613a3f826139d8565b604082019050919050565b60006020820190508181036000830152613a6381613a27565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613ac6602983612d0b565b9150613ad182613a6a565b604082019050919050565b60006020820190508181036000830152613af581613ab9565b9050919050565b7f556e697377617056325061697220686173206e6f74206265656e207365740000600082015250565b6000613b32601e83612d0b565b9150613b3d82613afc565b602082019050919050565b60006020820190508181036000830152613b6181613b25565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b6000613bc4602583612d0b565b9150613bcf82613b68565b604082019050919050565b60006020820190508181036000830152613bf381613bb7565b9050919050565b6000613c0582612df2565b9150613c1083612df2565b9250828203905081811115613c2857613c276132b9565b5b92915050565b6000613c3982612df2565b9150613c4483612df2565b9250828201905080821115613c5c57613c5b6132b9565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c98601b83612d0b565b9150613ca382613c62565b602082019050919050565b60006020820190508181036000830152613cc781613c8b565b9050919050565b6000613cd982612df2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d0b57613d0a6132b9565b5b600182019050919050565b6000819050919050565b6000613d3b613d36613d3184613d16565b612ed6565b612df2565b9050919050565b613d4b81613d20565b82525050565b600060a082019050613d666000830188612e9e565b613d736020830187613d42565b8181036040830152613d85818661363c565b9050613d946060830185612cd6565b613da16080830184612e9e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613de582612df2565b9150613df083612df2565b925082613e0057613dff613dab565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e67602183612d0b565b9150613e7282613e0b565b604082019050919050565b60006020820190508181036000830152613e9681613e5a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e31a54ad36578d5d5f8fe5d81cfd4be8b08895f2e905ab73184841b1a441455c64736f6c63430008100033

Deployed Bytecode Sourcemap

10720:9743:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11907:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12529:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13362:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12192:22;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;11010:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12806:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13531:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14355:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19170:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12715:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13852:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11123:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14498:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17393:287;;;;;;;;;;;;;:::i;:::-;;11733:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15709:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19498:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11840:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12909:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9707:148;;;;;;;;;;;;;:::i;:::-;;15108:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14911:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9493:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11780:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12620:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14078:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13036:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15530:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15266:252;;;;;;;;;;;;;:::i;:::-;;13211:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19341:149;;;;;;;;;;;;;:::i;:::-;;9863:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18896:266;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11907:71;;;;;;;;;;;;;:::o;12529:83::-;12566:13;12599:5;12592:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12529:83;:::o;13362:161::-;13437:4;13454:39;13463:12;:10;:12::i;:::-;13477:7;13486:6;13454:8;:39::i;:::-;13511:4;13504:11;;13362:161;;;;:::o;12192:22::-;;;;;;;;;;;;;;:::o;11010:106::-;;;;;;;;;;;;;:::o;12806:95::-;12859:7;12886;;12879:14;;12806:95;:::o;13531:313::-;13629:4;13646:36;13656:6;13664:9;13675:6;13646:9;:36::i;:::-;13693:121;13702:6;13710:12;:10;:12::i;:::-;13724:89;13762:6;13724:89;;;;;;;;;;;;;;;;;:11;:19;13736:6;13724:19;;;;;;;;;;;;;;;:33;13744:12;:10;:12::i;:::-;13724:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;13693:8;:121::i;:::-;13832:4;13825:11;;13531:313;;;;;:::o;14355:135::-;9630:12;:10;:12::i;:::-;9620:22;;:6;;;;;;;;;;:22;;;9612:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14475:7:::1;14457:15;:25;;;;:::i;:::-;14438:16;:44;;;;14355:135:::0;:::o;19170:126::-;9630:12;:10;:12::i;:::-;9620:22;;:6;;;;;;;;;;:22;;;9612:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19272:16:::1;19254:15;:34;;;;19170:126:::0;:::o;12715:83::-;12756:5;12781:9;;;;;;;;;;;12774:16;;12715:83;:::o;13852:218::-;13940:4;13957:83;13966:12;:10;:12::i;:::-;13980:7;13989:50;14028:10;13989:11;:25;14001:12;:10;:12::i;:::-;13989:25;;;;;;;;;;;;;;;:34;14015:7;13989:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;13957:8;:83::i;:::-;14058:4;14051:11;;13852:218;;;;:::o;11123:45::-;;;;;;;;;;;;;:::o;14498:161::-;9630:12;:10;:12::i;:::-;9620:22;;:6;;;;;;;;;;:22;;;9612:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14610:41:::1;14623:9;;14634:16;14610:12;:41::i;:::-;14498:161:::0;;;:::o;17393:287::-;17436:28;17467:24;17485:4;17467:9;:24::i;:::-;17436:55;;17529:1;17506:20;:24;17502:171;;;17552:16;;;;;;;;;;;17551:17;:42;;;;;17572:21;;;;;;;;;;;17551:42;17547:115;;;17614:32;17625:20;17614:10;:32::i;:::-;17547:115;17502:171;17425:255;17393:287::o;11733:40::-;;;;;;;;;;;;;:::o;15709:124::-;15774:4;15798:18;:27;15817:7;15798:27;;;;;;;;;;;;;;;;;;;;;;;;;15791:34;;15709:124;;;:::o;19498:244::-;19571:17;19598:15;19571:43;;19625:15;19643:10;:20;;;19672:4;19643:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19625:53;;19689:10;:19;;;19709:15;;;;;;;;;;;19726:7;19689:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19560:182;;19498:244;:::o;11840:60::-;;;;:::o;12909:119::-;12975:7;13002:9;:18;13012:7;13002:18;;;;;;;;;;;;;;;;12995:25;;12909:119;;;:::o;9707:148::-;9630:12;:10;:12::i;:::-;9620:22;;:6;;;;;;;;;;:22;;;9612:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9814:1:::1;9777:40;;9798:6;::::0;::::1;;;;;;;;9777:40;;;;;;;;;;;;9845:1;9828:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;9707:148::o:0;15108:150::-;9630:12;:10;:12::i;:::-;9620:22;;:6;;;;;;;;;;:22;;;9612:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15208:6:::1;15191:7;:14;;:23;;;;15243:7;15225;:15;;:25;;;;15108:150:::0;;:::o;14911:189::-;9630:12;:10;:12::i;:::-;9620:22;;:6;;;;;;;;;;:22;;;9612:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15035:14:::1;15017:15;;:32;;;;;;;;;;;;;;;;;;15078:14;15060:15;;:32;;;;;;;;;;;;;;;;;;14911:189:::0;;:::o;9493:79::-;9531:7;9558:6;;;;;;;;;;;9551:13;;9493:79;:::o;11780:42::-;;;;:::o;12620:87::-;12659:13;12692:7;12685:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12620:87;:::o;14078:269::-;14171:4;14188:129;14197:12;:10;:12::i;:::-;14211:7;14220:96;14259:15;14220:96;;;;;;;;;;;;;;;;;:11;:25;14232:12;:10;:12::i;:::-;14220:25;;;;;;;;;;;;;;;:34;14246:7;14220:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;14188:8;:129::i;:::-;14335:4;14328:11;;14078:269;;;;:::o;13036:167::-;13114:4;13131:42;13141:12;:10;:12::i;:::-;13155:9;13166:6;13131:9;:42::i;:::-;13191:4;13184:11;;13036:167;;;;:::o;15530:171::-;9630:12;:10;:12::i;:::-;9620:22;;:6;;;;;;;;;;:22;;;9612:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15631:8:::1;15607:21;;:32;;;;;;;;;;;;;;;;;;15655:38;15684:8;15655:38;;;;;;:::i;:::-;;;;;;;;15530:171:::0;:::o;15266:252::-;9630:12;:10;:12::i;:::-;9620:22;;:6;;;;;;;;;;:22;;;9612:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15356:1:::1;15327:31;;:17;;;;;;;;;;;:31;;;15319:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;15445:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15427:55;;;15491:4;15498:11;;;;;;;;;;;15427:83;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15407:17;;:103;;;;;;;;;;;;;;;;;;15266:252::o:0;13211:143::-;13292:7;13319:11;:18;13331:5;13319:18;;;;;;;;;;;;;;;:27;13338:7;13319:27;;;;;;;;;;;;;;;;13312:34;;13211:143;;;;:::o;19341:149::-;19384:18;19405:21;19384:42;;19445:15;;;;;;;;;;;19437:33;;:45;19471:10;19437:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19373:117;19341:149::o;9863:244::-;9630:12;:10;:12::i;:::-;9620:22;;:6;;;;;;;;;;:22;;;9612:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9972:1:::1;9952:22;;:8;:22;;::::0;9944:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10062:8;10033:38;;10054:6;::::0;::::1;;;;;;;;10033:38;;;;;;;;;;;;10091:8;10082:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;9863:244:::0;:::o;18896:266::-;18954:7;18975:21;19013:1;18999:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18975:40;;19036:11;;;;;;;;;;;19026:4;19031:1;19026:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;19076:4;19058;19063:1;19058:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19099:15;;;;;;;;;;;:29;;;19129:15;;19146:4;19099:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19152:1;19099:55;;;;;;;;:::i;:::-;;;;;;;;19092:62;;;18896:266;:::o;5835:98::-;5888:7;5915:10;5908:17;;5835:98;:::o;15841:337::-;15951:1;15934:19;;:5;:19;;;15926:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16032:1;16013:21;;:7;:21;;;16005:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16116:6;16086:11;:18;16098:5;16086:18;;;;;;;;;;;;;;;:27;16105:7;16086:27;;;;;;;;;;;;;;;:36;;;;16154:7;16138:32;;16147:5;16138:32;;;16163:6;16138:32;;;;;;:::i;:::-;;;;;;;;15841:337;;;:::o;16186:1199::-;16290:1;16274:18;;:4;:18;;;16266:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16367:1;16353:16;;:2;:16;;;16345:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16437:1;16428:6;:10;16420:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16532:1;16503:31;;:17;;;;;;;;;;;:31;;;16495:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16579:11;16609:13;16626:18;:24;16645:4;16626:24;;;;;;;;;;;;;;;;;;;;;;;;;16625:25;:52;;;;;16655:18;:22;16674:2;16655:22;;;;;;;;;;;;;;;;;;;;;;;;;16654:23;16625:52;:71;;;;;16689:7;:5;:7::i;:::-;16681:15;;:4;:15;;;;16625:71;:88;;;;;16706:7;:5;:7::i;:::-;16700:13;;:2;:13;;;;16625:88;16609:104;;16724:21;16748:25;16766:6;16748:13;16758:2;16748:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;16724:49;;16806:17;;;;;;;;;;;16798:25;;:4;:25;;;16794:141;;16865:16;;16848:13;:33;;16840:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;16794:141;16957:17;;;;;;;;;;;16949:25;;:4;:25;;;;:52;;;;;16984:17;;;;;;;;;;;16978:23;;:2;:23;;;16949:52;16945:194;;;17096:4;17087:13;;17115:12;:10;:12::i;:::-;16945:194;17161:17;;;;;;;;;;;17153:25;;:4;:25;;;;:52;;;;;17188:17;;;;;;;;;;;17182:23;;:2;:23;;;;17153:52;17149:168;;;17247:16;;17230:13;:33;;17222:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;17149:168;17327:50;17342:4;17348:2;17352:6;17360:8;17370:6;17327:14;:50::i;:::-;16255:1130;;;16186:1199;;;:::o;4307:192::-;4393:7;4426:1;4421;:6;;4429:12;4413:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4453:9;4469:1;4465;:5;;;;:::i;:::-;4453:17;;4490:1;4483:8;;;4307:192;;;;;:::o;3974:181::-;4032:7;4052:9;4068:1;4064;:5;;;;:::i;:::-;4052:17;;4093:1;4088;:6;;4080:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4146:1;4139:8;;;3974:181;;;;:::o;14667:236::-;14754:9;14749:147;14773:9;;:16;;14769:1;:20;14749:147;;;14811:12;14826:9;;14836:1;14826:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14811:27;;14880:4;14853:18;:24;14872:4;14853:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;14796:100;14791:3;;;;;:::i;:::-;;;;14749:147;;;;14667:236;;;:::o;18073:815::-;10945:4;10926:16;;:23;;;;;;;;;;;;;;;;;;18145:21:::1;18198:1;18184:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18177:23;;18229:4;18211;18216:1;18211:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;18255:11;;;;;;;;;;;18245:4;18250:1;18245:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;::::0;::::1;18287:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18277:4;18282:1;18277:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;18355:62;18372:4;18387:15;;;;;;;;;;;18405:11;18355:8;:62::i;:::-;18429:15;;;;;;;;;;;:66;;;18510:11;18536:1;18580:4;18607;18627:15;18429:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18674:18;18695:21;18674:42;;18727:17;18747;18762:1;18747:10;:14;;:17;;;;:::i;:::-;18727:37;;18785:15;;;;;;;;;;;18777:33;;:44;18811:9;18777:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18840:15;;;;;;;;;;;18832:33;;:44;18866:9;18832:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18134:754;;;10991:5:::0;10972:16;;:24;;;;;;;;;;;;;;;;;;18073:815;:::o;17688:379::-;17729:28;17760:24;17778:4;17760:9;:24::i;:::-;17729:55;;17822:1;17799:20;:24;17795:265;;;17840:19;17862:27;:25;:27::i;:::-;17840:49;;17932:11;17908:20;:35;;:56;;;;;17948:16;;;;;;;;;;;17947:17;17908:56;:81;;;;;17968:21;;;;;;;;;;;17908:81;17904:145;;;18010:23;18021:11;18010:10;:23::i;:::-;17904:145;17825:235;17795:265;17718:349;17688:379::o;19823:637::-;19954:17;19974:8;:50;;20023:1;19974:50;;;19985:35;20016:3;19985:26;19996:7;:14;;;19985:6;:10;;:26;;;;:::i;:::-;:30;;:35;;;;:::i;:::-;19974:50;19954:70;;20039:8;:18;;;;;20051:6;20039:18;20035:99;;;20086:36;20118:3;20086:27;20097:7;:15;;;20086:6;:10;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;20074:48;;20035:99;20144:22;20169:21;20180:9;20169:6;:10;;:21;;;;:::i;:::-;20144:46;;20221:29;20243:6;20221:9;:17;20231:6;20221:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;20201:9;:17;20211:6;20201:17;;;;;;;;;;;;;;;:49;;;;20284:40;20309:14;20284:9;:20;20294:9;20284:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;20261:9;:20;20271:9;20261:20;;;;;;;;;;;;;;;:63;;;;20362:39;20391:9;20362;:24;20380:4;20362:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;20335:9;:24;20353:4;20335:24;;;;;;;;;;;;;;;:66;;;;20434:9;20417:35;;20426:6;20417:35;;;20445:6;20417:35;;;;;;:::i;:::-;;;;;;;;19943:517;;19823:637;;;;;:::o;4986:132::-;5044:7;5071:39;5075:1;5078;5071:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5064:46;;4986:132;;;;:::o;4507:471::-;4565:7;4815:1;4810;:6;4806:47;;4840:1;4833:8;;;;4806:47;4865:9;4881:1;4877;:5;;;;:::i;:::-;4865:17;;4910:1;4905;4901;:5;;;;:::i;:::-;:10;4893:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4969:1;4962:8;;;4507:471;;;;;:::o;4163:136::-;4221:7;4248:43;4252:1;4255;4248:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4241:50;;4163:136;;;;:::o;5126:278::-;5212:7;5244:1;5240;:5;5247:12;5232:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5271:9;5287:1;5283;:5;;;;:::i;:::-;5271:17;;5395:1;5388:8;;;5126:278;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:246::-;954:1;964:113;978:6;975:1;972:13;964:113;;;1063:1;1058:3;1054:11;1048:18;1044:1;1039:3;1035:11;1028:39;1000:2;997:1;993:10;988:15;;964:113;;;1111:1;1102:6;1097:3;1093:16;1086:27;935:184;873:246;;;:::o;1125:102::-;1166:6;1217:2;1213:7;1208:2;1201:5;1197:14;1193:28;1183:38;;1125:102;;;:::o;1233:377::-;1321:3;1349:39;1382:5;1349:39;:::i;:::-;1404:71;1468:6;1463:3;1404:71;:::i;:::-;1397:78;;1484:65;1542:6;1537:3;1530:4;1523:5;1519:16;1484:65;:::i;:::-;1574:29;1596:6;1574:29;:::i;:::-;1569:3;1565:39;1558:46;;1325:285;1233:377;;;;:::o;1616:313::-;1729:4;1767:2;1756:9;1752:18;1744:26;;1816:9;1810:4;1806:20;1802:1;1791:9;1787:17;1780:47;1844:78;1917:4;1908:6;1844:78;:::i;:::-;1836:86;;1616:313;;;;:::o;1935:75::-;1968:6;2001:2;1995:9;1985:19;;1935:75;:::o;2016:117::-;2125:1;2122;2115:12;2139:117;2248:1;2245;2238:12;2262:122;2335:24;2353:5;2335:24;:::i;:::-;2328:5;2325:35;2315:63;;2374:1;2371;2364:12;2315:63;2262:122;:::o;2390:139::-;2436:5;2474:6;2461:20;2452:29;;2490:33;2517:5;2490:33;:::i;:::-;2390:139;;;;:::o;2535:77::-;2572:7;2601:5;2590:16;;2535:77;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:118::-;3885:24;3903:5;3885:24;:::i;:::-;3880:3;3873:37;3798:118;;:::o;3922:332::-;4043:4;4081:2;4070:9;4066:18;4058:26;;4094:71;4162:1;4151:9;4147:17;4138:6;4094:71;:::i;:::-;4175:72;4243:2;4232:9;4228:18;4219:6;4175:72;:::i;:::-;3922:332;;;;;:::o;4260:60::-;4288:3;4309:5;4302:12;;4260:60;;;:::o;4326:142::-;4376:9;4409:53;4427:34;4436:24;4454:5;4436:24;:::i;:::-;4427:34;:::i;:::-;4409:53;:::i;:::-;4396:66;;4326:142;;;:::o;4474:126::-;4524:9;4557:37;4588:5;4557:37;:::i;:::-;4544:50;;4474:126;;;:::o;4606:152::-;4682:9;4715:37;4746:5;4715:37;:::i;:::-;4702:50;;4606:152;;;:::o;4764:183::-;4877:63;4934:5;4877:63;:::i;:::-;4872:3;4865:76;4764:183;;:::o;4953:274::-;5072:4;5110:2;5099:9;5095:18;5087:26;;5123:97;5217:1;5206:9;5202:17;5193:6;5123:97;:::i;:::-;4953:274;;;;:::o;5233:222::-;5326:4;5364:2;5353:9;5349:18;5341:26;;5377:71;5445:1;5434:9;5430:17;5421:6;5377:71;:::i;:::-;5233:222;;;;:::o;5461:619::-;5538:6;5546;5554;5603:2;5591:9;5582:7;5578:23;5574:32;5571:119;;;5609:79;;:::i;:::-;5571:119;5729:1;5754:53;5799:7;5790:6;5779:9;5775:22;5754:53;:::i;:::-;5744:63;;5700:117;5856:2;5882:53;5927:7;5918:6;5907:9;5903:22;5882:53;:::i;:::-;5872:63;;5827:118;5984:2;6010:53;6055:7;6046:6;6035:9;6031:22;6010:53;:::i;:::-;6000:63;;5955:118;5461:619;;;;;:::o;6086:329::-;6145:6;6194:2;6182:9;6173:7;6169:23;6165:32;6162:119;;;6200:79;;:::i;:::-;6162:119;6320:1;6345:53;6390:7;6381:6;6370:9;6366:22;6345:53;:::i;:::-;6335:63;;6291:117;6086:329;;;;:::o;6421:86::-;6456:7;6496:4;6489:5;6485:16;6474:27;;6421:86;;;:::o;6513:112::-;6596:22;6612:5;6596:22;:::i;:::-;6591:3;6584:35;6513:112;;:::o;6631:214::-;6720:4;6758:2;6747:9;6743:18;6735:26;;6771:67;6835:1;6824:9;6820:17;6811:6;6771:67;:::i;:::-;6631:214;;;;:::o;6851:117::-;6960:1;6957;6950:12;6974:117;7083:1;7080;7073:12;7097:117;7206:1;7203;7196:12;7237:568;7310:8;7320:6;7370:3;7363:4;7355:6;7351:17;7347:27;7337:122;;7378:79;;:::i;:::-;7337:122;7491:6;7478:20;7468:30;;7521:18;7513:6;7510:30;7507:117;;;7543:79;;:::i;:::-;7507:117;7657:4;7649:6;7645:17;7633:29;;7711:3;7703:4;7695:6;7691:17;7681:8;7677:32;7674:41;7671:128;;;7718:79;;:::i;:::-;7671:128;7237:568;;;;;:::o;7811:116::-;7881:21;7896:5;7881:21;:::i;:::-;7874:5;7871:32;7861:60;;7917:1;7914;7907:12;7861:60;7811:116;:::o;7933:133::-;7976:5;8014:6;8001:20;7992:29;;8030:30;8054:5;8030:30;:::i;:::-;7933:133;;;;:::o;8072:698::-;8164:6;8172;8180;8229:2;8217:9;8208:7;8204:23;8200:32;8197:119;;;8235:79;;:::i;:::-;8197:119;8383:1;8372:9;8368:17;8355:31;8413:18;8405:6;8402:30;8399:117;;;8435:79;;:::i;:::-;8399:117;8548:80;8620:7;8611:6;8600:9;8596:22;8548:80;:::i;:::-;8530:98;;;;8326:312;8677:2;8703:50;8745:7;8736:6;8725:9;8721:22;8703:50;:::i;:::-;8693:60;;8648:115;8072:698;;;;;:::o;8776:329::-;8835:6;8884:2;8872:9;8863:7;8859:23;8855:32;8852:119;;;8890:79;;:::i;:::-;8852:119;9010:1;9035:53;9080:7;9071:6;9060:9;9056:22;9035:53;:::i;:::-;9025:63;;8981:117;8776:329;;;;:::o;9111:474::-;9179:6;9187;9236:2;9224:9;9215:7;9211:23;9207:32;9204:119;;;9242:79;;:::i;:::-;9204:119;9362:1;9387:53;9432:7;9423:6;9412:9;9408:22;9387:53;:::i;:::-;9377:63;;9333:117;9489:2;9515:53;9560:7;9551:6;9540:9;9536:22;9515:53;:::i;:::-;9505:63;;9460:118;9111:474;;;;;:::o;9591:::-;9659:6;9667;9716:2;9704:9;9695:7;9691:23;9687:32;9684:119;;;9722:79;;:::i;:::-;9684:119;9842:1;9867:53;9912:7;9903:6;9892:9;9888:22;9867:53;:::i;:::-;9857:63;;9813:117;9969:2;9995:53;10040:7;10031:6;10020:9;10016:22;9995:53;:::i;:::-;9985:63;;9940:118;9591:474;;;;;:::o;10071:323::-;10127:6;10176:2;10164:9;10155:7;10151:23;10147:32;10144:119;;;10182:79;;:::i;:::-;10144:119;10302:1;10327:50;10369:7;10360:6;10349:9;10345:22;10327:50;:::i;:::-;10317:60;;10273:114;10071:323;;;;:::o;10400:180::-;10448:77;10445:1;10438:88;10545:4;10542:1;10535:15;10569:4;10566:1;10559:15;10586:320;10630:6;10667:1;10661:4;10657:12;10647:22;;10714:1;10708:4;10704:12;10735:18;10725:81;;10791:4;10783:6;10779:17;10769:27;;10725:81;10853:2;10845:6;10842:14;10822:18;10819:38;10816:84;;10872:18;;:::i;:::-;10816:84;10637:269;10586:320;;;:::o;10912:182::-;11052:34;11048:1;11040:6;11036:14;11029:58;10912:182;:::o;11100:366::-;11242:3;11263:67;11327:2;11322:3;11263:67;:::i;:::-;11256:74;;11339:93;11428:3;11339:93;:::i;:::-;11457:2;11452:3;11448:12;11441:19;;11100:366;;;:::o;11472:419::-;11638:4;11676:2;11665:9;11661:18;11653:26;;11725:9;11719:4;11715:20;11711:1;11700:9;11696:17;11689:47;11753:131;11879:4;11753:131;:::i;:::-;11745:139;;11472:419;;;:::o;11897:180::-;11945:77;11942:1;11935:88;12042:4;12039:1;12032:15;12066:4;12063:1;12056:15;12083:348;12123:7;12146:20;12164:1;12146:20;:::i;:::-;12141:25;;12180:20;12198:1;12180:20;:::i;:::-;12175:25;;12368:1;12300:66;12296:74;12293:1;12290:81;12285:1;12278:9;12271:17;12267:105;12264:131;;;12375:18;;:::i;:::-;12264:131;12423:1;12420;12416:9;12405:20;;12083:348;;;;:::o;12437:143::-;12494:5;12525:6;12519:13;12510:22;;12541:33;12568:5;12541:33;:::i;:::-;12437:143;;;;:::o;12586:351::-;12656:6;12705:2;12693:9;12684:7;12680:23;12676:32;12673:119;;;12711:79;;:::i;:::-;12673:119;12831:1;12856:64;12912:7;12903:6;12892:9;12888:22;12856:64;:::i;:::-;12846:74;;12802:128;12586:351;;;;:::o;12943:332::-;13064:4;13102:2;13091:9;13087:18;13079:26;;13115:71;13183:1;13172:9;13168:17;13159:6;13115:71;:::i;:::-;13196:72;13264:2;13253:9;13249:18;13240:6;13196:72;:::i;:::-;12943:332;;;;;:::o;13281:137::-;13335:5;13366:6;13360:13;13351:22;;13382:30;13406:5;13382:30;:::i;:::-;13281:137;;;;:::o;13424:345::-;13491:6;13540:2;13528:9;13519:7;13515:23;13511:32;13508:119;;;13546:79;;:::i;:::-;13508:119;13666:1;13691:61;13744:7;13735:6;13724:9;13720:22;13691:61;:::i;:::-;13681:71;;13637:125;13424:345;;;;:::o;13775:221::-;13915:34;13911:1;13903:6;13899:14;13892:58;13984:4;13979:2;13971:6;13967:15;13960:29;13775:221;:::o;14002:366::-;14144:3;14165:67;14229:2;14224:3;14165:67;:::i;:::-;14158:74;;14241:93;14330:3;14241:93;:::i;:::-;14359:2;14354:3;14350:12;14343:19;;14002:366;;;:::o;14374:419::-;14540:4;14578:2;14567:9;14563:18;14555:26;;14627:9;14621:4;14617:20;14613:1;14602:9;14598:17;14591:47;14655:131;14781:4;14655:131;:::i;:::-;14647:139;;14374:419;;;:::o;14799:143::-;14856:5;14887:6;14881:13;14872:22;;14903:33;14930:5;14903:33;:::i;:::-;14799:143;;;;:::o;14948:351::-;15018:6;15067:2;15055:9;15046:7;15042:23;15038:32;15035:119;;;15073:79;;:::i;:::-;15035:119;15193:1;15218:64;15274:7;15265:6;15254:9;15250:22;15218:64;:::i;:::-;15208:74;;15164:128;14948:351;;;;:::o;15305:332::-;15426:4;15464:2;15453:9;15449:18;15441:26;;15477:71;15545:1;15534:9;15530:17;15521:6;15477:71;:::i;:::-;15558:72;15626:2;15615:9;15611:18;15602:6;15558:72;:::i;:::-;15305:332;;;;;:::o;15643:225::-;15783:34;15779:1;15771:6;15767:14;15760:58;15852:8;15847:2;15839:6;15835:15;15828:33;15643:225;:::o;15874:366::-;16016:3;16037:67;16101:2;16096:3;16037:67;:::i;:::-;16030:74;;16113:93;16202:3;16113:93;:::i;:::-;16231:2;16226:3;16222:12;16215:19;;15874:366;;;:::o;16246:419::-;16412:4;16450:2;16439:9;16435:18;16427:26;;16499:9;16493:4;16489:20;16485:1;16474:9;16470:17;16463:47;16527:131;16653:4;16527:131;:::i;:::-;16519:139;;16246:419;;;:::o;16671:180::-;16719:77;16716:1;16709:88;16816:4;16813:1;16806:15;16840:4;16837:1;16830:15;16857:180;16905:77;16902:1;16895:88;17002:4;16999:1;16992:15;17026:4;17023:1;17016:15;17043:114;17110:6;17144:5;17138:12;17128:22;;17043:114;;;:::o;17163:184::-;17262:11;17296:6;17291:3;17284:19;17336:4;17331:3;17327:14;17312:29;;17163:184;;;;:::o;17353:132::-;17420:4;17443:3;17435:11;;17473:4;17468:3;17464:14;17456:22;;17353:132;;;:::o;17491:108::-;17568:24;17586:5;17568:24;:::i;:::-;17563:3;17556:37;17491:108;;:::o;17605:179::-;17674:10;17695:46;17737:3;17729:6;17695:46;:::i;:::-;17773:4;17768:3;17764:14;17750:28;;17605:179;;;;:::o;17790:113::-;17860:4;17892;17887:3;17883:14;17875:22;;17790:113;;;:::o;17939:732::-;18058:3;18087:54;18135:5;18087:54;:::i;:::-;18157:86;18236:6;18231:3;18157:86;:::i;:::-;18150:93;;18267:56;18317:5;18267:56;:::i;:::-;18346:7;18377:1;18362:284;18387:6;18384:1;18381:13;18362:284;;;18463:6;18457:13;18490:63;18549:3;18534:13;18490:63;:::i;:::-;18483:70;;18576:60;18629:6;18576:60;:::i;:::-;18566:70;;18422:224;18409:1;18406;18402:9;18397:14;;18362:284;;;18366:14;18662:3;18655:10;;18063:608;;;17939:732;;;;:::o;18677:483::-;18848:4;18886:2;18875:9;18871:18;18863:26;;18899:71;18967:1;18956:9;18952:17;18943:6;18899:71;:::i;:::-;19017:9;19011:4;19007:20;19002:2;18991:9;18987:18;18980:48;19045:108;19148:4;19139:6;19045:108;:::i;:::-;19037:116;;18677:483;;;;;:::o;19166:281::-;19249:27;19271:4;19249:27;:::i;:::-;19241:6;19237:40;19379:6;19367:10;19364:22;19343:18;19331:10;19328:34;19325:62;19322:88;;;19390:18;;:::i;:::-;19322:88;19430:10;19426:2;19419:22;19209:238;19166:281;;:::o;19453:129::-;19487:6;19514:20;;:::i;:::-;19504:30;;19543:33;19571:4;19563:6;19543:33;:::i;:::-;19453:129;;;:::o;19588:311::-;19665:4;19755:18;19747:6;19744:30;19741:56;;;19777:18;;:::i;:::-;19741:56;19827:4;19819:6;19815:17;19807:25;;19887:4;19881;19877:15;19869:23;;19588:311;;;:::o;19922:732::-;20029:5;20054:81;20070:64;20127:6;20070:64;:::i;:::-;20054:81;:::i;:::-;20045:90;;20155:5;20184:6;20177:5;20170:21;20218:4;20211:5;20207:16;20200:23;;20271:4;20263:6;20259:17;20251:6;20247:30;20300:3;20292:6;20289:15;20286:122;;;20319:79;;:::i;:::-;20286:122;20434:6;20417:231;20451:6;20446:3;20443:15;20417:231;;;20526:3;20555:48;20599:3;20587:10;20555:48;:::i;:::-;20550:3;20543:61;20633:4;20628:3;20624:14;20617:21;;20493:155;20477:4;20472:3;20468:14;20461:21;;20417:231;;;20421:21;20035:619;;19922:732;;;;;:::o;20677:385::-;20759:5;20808:3;20801:4;20793:6;20789:17;20785:27;20775:122;;20816:79;;:::i;:::-;20775:122;20926:6;20920:13;20951:105;21052:3;21044:6;21037:4;21029:6;21025:17;20951:105;:::i;:::-;20942:114;;20765:297;20677:385;;;;:::o;21068:554::-;21163:6;21212:2;21200:9;21191:7;21187:23;21183:32;21180:119;;;21218:79;;:::i;:::-;21180:119;21359:1;21348:9;21344:17;21338:24;21389:18;21381:6;21378:30;21375:117;;;21411:79;;:::i;:::-;21375:117;21516:89;21597:7;21588:6;21577:9;21573:22;21516:89;:::i;:::-;21506:99;;21309:306;21068:554;;;;:::o;21628:223::-;21768:34;21764:1;21756:6;21752:14;21745:58;21837:6;21832:2;21824:6;21820:15;21813:31;21628:223;:::o;21857:366::-;21999:3;22020:67;22084:2;22079:3;22020:67;:::i;:::-;22013:74;;22096:93;22185:3;22096:93;:::i;:::-;22214:2;22209:3;22205:12;22198:19;;21857:366;;;:::o;22229:419::-;22395:4;22433:2;22422:9;22418:18;22410:26;;22482:9;22476:4;22472:20;22468:1;22457:9;22453:17;22446:47;22510:131;22636:4;22510:131;:::i;:::-;22502:139;;22229:419;;;:::o;22654:221::-;22794:34;22790:1;22782:6;22778:14;22771:58;22863:4;22858:2;22850:6;22846:15;22839:29;22654:221;:::o;22881:366::-;23023:3;23044:67;23108:2;23103:3;23044:67;:::i;:::-;23037:74;;23120:93;23209:3;23120:93;:::i;:::-;23238:2;23233:3;23229:12;23222:19;;22881:366;;;:::o;23253:419::-;23419:4;23457:2;23446:9;23442:18;23434:26;;23506:9;23500:4;23496:20;23492:1;23481:9;23477:17;23470:47;23534:131;23660:4;23534:131;:::i;:::-;23526:139;;23253:419;;;:::o;23678:224::-;23818:34;23814:1;23806:6;23802:14;23795:58;23887:7;23882:2;23874:6;23870:15;23863:32;23678:224;:::o;23908:366::-;24050:3;24071:67;24135:2;24130:3;24071:67;:::i;:::-;24064:74;;24147:93;24236:3;24147:93;:::i;:::-;24265:2;24260:3;24256:12;24249:19;;23908:366;;;:::o;24280:419::-;24446:4;24484:2;24473:9;24469:18;24461:26;;24533:9;24527:4;24523:20;24519:1;24508:9;24504:17;24497:47;24561:131;24687:4;24561:131;:::i;:::-;24553:139;;24280:419;;;:::o;24705:222::-;24845:34;24841:1;24833:6;24829:14;24822:58;24914:5;24909:2;24901:6;24897:15;24890:30;24705:222;:::o;24933:366::-;25075:3;25096:67;25160:2;25155:3;25096:67;:::i;:::-;25089:74;;25172:93;25261:3;25172:93;:::i;:::-;25290:2;25285:3;25281:12;25274:19;;24933:366;;;:::o;25305:419::-;25471:4;25509:2;25498:9;25494:18;25486:26;;25558:9;25552:4;25548:20;25544:1;25533:9;25529:17;25522:47;25586:131;25712:4;25586:131;:::i;:::-;25578:139;;25305:419;;;:::o;25730:228::-;25870:34;25866:1;25858:6;25854:14;25847:58;25939:11;25934:2;25926:6;25922:15;25915:36;25730:228;:::o;25964:366::-;26106:3;26127:67;26191:2;26186:3;26127:67;:::i;:::-;26120:74;;26203:93;26292:3;26203:93;:::i;:::-;26321:2;26316:3;26312:12;26305:19;;25964:366;;;:::o;26336:419::-;26502:4;26540:2;26529:9;26525:18;26517:26;;26589:9;26583:4;26579:20;26575:1;26564:9;26560:17;26553:47;26617:131;26743:4;26617:131;:::i;:::-;26609:139;;26336:419;;;:::o;26761:180::-;26901:32;26897:1;26889:6;26885:14;26878:56;26761:180;:::o;26947:366::-;27089:3;27110:67;27174:2;27169:3;27110:67;:::i;:::-;27103:74;;27186:93;27275:3;27186:93;:::i;:::-;27304:2;27299:3;27295:12;27288:19;;26947:366;;;:::o;27319:419::-;27485:4;27523:2;27512:9;27508:18;27500:26;;27572:9;27566:4;27562:20;27558:1;27547:9;27543:17;27536:47;27600:131;27726:4;27600:131;:::i;:::-;27592:139;;27319:419;;;:::o;27744:224::-;27884:34;27880:1;27872:6;27868:14;27861:58;27953:7;27948:2;27940:6;27936:15;27929:32;27744:224;:::o;27974:366::-;28116:3;28137:67;28201:2;28196:3;28137:67;:::i;:::-;28130:74;;28213:93;28302:3;28213:93;:::i;:::-;28331:2;28326:3;28322:12;28315:19;;27974:366;;;:::o;28346:419::-;28512:4;28550:2;28539:9;28535:18;28527:26;;28599:9;28593:4;28589:20;28585:1;28574:9;28570:17;28563:47;28627:131;28753:4;28627:131;:::i;:::-;28619:139;;28346:419;;;:::o;28771:194::-;28811:4;28831:20;28849:1;28831:20;:::i;:::-;28826:25;;28865:20;28883:1;28865:20;:::i;:::-;28860:25;;28909:1;28906;28902:9;28894:17;;28933:1;28927:4;28924:11;28921:37;;;28938:18;;:::i;:::-;28921:37;28771:194;;;;:::o;28971:191::-;29011:3;29030:20;29048:1;29030:20;:::i;:::-;29025:25;;29064:20;29082:1;29064:20;:::i;:::-;29059:25;;29107:1;29104;29100:9;29093:16;;29128:3;29125:1;29122:10;29119:36;;;29135:18;;:::i;:::-;29119:36;28971:191;;;;:::o;29168:177::-;29308:29;29304:1;29296:6;29292:14;29285:53;29168:177;:::o;29351:366::-;29493:3;29514:67;29578:2;29573:3;29514:67;:::i;:::-;29507:74;;29590:93;29679:3;29590:93;:::i;:::-;29708:2;29703:3;29699:12;29692:19;;29351:366;;;:::o;29723:419::-;29889:4;29927:2;29916:9;29912:18;29904:26;;29976:9;29970:4;29966:20;29962:1;29951:9;29947:17;29940:47;30004:131;30130:4;30004:131;:::i;:::-;29996:139;;29723:419;;;:::o;30148:233::-;30187:3;30210:24;30228:5;30210:24;:::i;:::-;30201:33;;30256:66;30249:5;30246:77;30243:103;;30326:18;;:::i;:::-;30243:103;30373:1;30366:5;30362:13;30355:20;;30148:233;;;:::o;30387:85::-;30432:7;30461:5;30450:16;;30387:85;;;:::o;30478:158::-;30536:9;30569:61;30587:42;30596:32;30622:5;30596:32;:::i;:::-;30587:42;:::i;:::-;30569:61;:::i;:::-;30556:74;;30478:158;;;:::o;30642:147::-;30737:45;30776:5;30737:45;:::i;:::-;30732:3;30725:58;30642:147;;:::o;30795:831::-;31058:4;31096:3;31085:9;31081:19;31073:27;;31110:71;31178:1;31167:9;31163:17;31154:6;31110:71;:::i;:::-;31191:80;31267:2;31256:9;31252:18;31243:6;31191:80;:::i;:::-;31318:9;31312:4;31308:20;31303:2;31292:9;31288:18;31281:48;31346:108;31449:4;31440:6;31346:108;:::i;:::-;31338:116;;31464:72;31532:2;31521:9;31517:18;31508:6;31464:72;:::i;:::-;31546:73;31614:3;31603:9;31599:19;31590:6;31546:73;:::i;:::-;30795:831;;;;;;;;:::o;31632:180::-;31680:77;31677:1;31670:88;31777:4;31774:1;31767:15;31801:4;31798:1;31791:15;31818:185;31858:1;31875:20;31893:1;31875:20;:::i;:::-;31870:25;;31909:20;31927:1;31909:20;:::i;:::-;31904:25;;31948:1;31938:35;;31953:18;;:::i;:::-;31938:35;31995:1;31992;31988:9;31983:14;;31818:185;;;;:::o;32009:220::-;32149:34;32145:1;32137:6;32133:14;32126:58;32218:3;32213:2;32205:6;32201:15;32194:28;32009:220;:::o;32235:366::-;32377:3;32398:67;32462:2;32457:3;32398:67;:::i;:::-;32391:74;;32474:93;32563:3;32474:93;:::i;:::-;32592:2;32587:3;32583:12;32576:19;;32235:366;;;:::o;32607:419::-;32773:4;32811:2;32800:9;32796:18;32788:26;;32860:9;32854:4;32850:20;32846:1;32835:9;32831:17;32824:47;32888:131;33014:4;32888:131;:::i;:::-;32880:139;;32607:419;;;:::o

Swarm Source

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