ETH Price: $2,350.62 (-2.32%)

Token

Cryptnative AI (CNAI)
 

Overview

Max Total Supply

100,000,000 CNAI

Holders

130

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,360,261.596917948 CNAI

Value
$0.00
0x104EF354e953D3f018c2F65D2bB8200D3AC13607
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:
CryptnativeAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-08
*/

/*
Transforming Digital Creativity and Trading. 
The primary mission of Cryptnative AI is to simplify user experiences. 
We stand as a gateway to digital transformation, providing innovative creative tools and smart trading solutions. 
Cryptnative AI invites you to explore a world where artistic expression meets cutting-edge technology, creating an unlimited digital experience. With Cryptnative AI, ease and excellence are the primary goals in every step of your digital journey


Website   : https://www.cryptnative.com/
Telegram  : hhttps://t.me/cryptnative
Twitter   : https://twitter.com/CryptnativeAI 
Bot       : https://t.me/cryptnative_bot
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

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

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 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) {
        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;
        return c;
    }
}

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract CryptnativeAI is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;

    address payable private  _taxWallet;
    address private constant deadAddress = address(0xdead);

    uint256 private constant _initialBuyTax=20;
    uint256 private constant _initialSellTax=35;
    uint256 private constant _reduceBuyTaxAt=25;
    uint256 private constant _reduceSellTaxAt=25;
    uint256 private constant _preventSwapBefore=25;

    uint256 private _finalBuyTax=5;
    uint256 private _finalSellTax=5;
    uint256 private _buyCount=0;

    string private constant _name   = unicode"Cryptnative AI";
    string private constant _symbol = unicode"CNAI";
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000 * 10**_decimals;

    uint256 public constant _taxSwapThreshold = 100000 * 10**_decimals;
    uint256 public constant _maxTaxSwap = 1000000 * 10**_decimals;
    uint256 public _maxTxAmount = 1000000 * 10**_decimals;
    uint256 public _maxWalletSize = 1000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private limitEffect = true;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event TradingOpened();
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    event MaxWalletSizeUpdated(uint256 _maxWalletSize);
    event FinalTax (uint256 _valueBuy, uint256 _valueSell);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;

        excludeFromFee(owner(), true);
        excludeFromFee(deadAddress, true);
        excludeFromFee(address(this), true);
        excludeFromFee(_taxWallet, true);
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure 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 excludeFromFee(address account, bool excluded) public onlyOwner {
        _isExcludedFromFee[account] = excluded;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0) && spender != address(0), "ERC20: approve 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) && to != address(0), "ERC20: transfer the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        uint256 taxAmount=0;

        if (from != owner() && to != owner()) {
            if (!tradingOpen) {
                require( 
                  _isExcludedFromFee[from] || _isExcludedFromFee[to],
                  "trading is not yet open"
                );
            } 

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                if (limitEffect) {
                    require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                    require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                } 
                _buyCount++;
            }
            
            if ( to == uniswapV2Pair && from != address(this) ){
                taxAmount = amount.mul 
                ((_buyCount>_reduceSellTaxAt)
                    ?_finalSellTax:_initialSellTax).div(100
                );
            } else if (from == uniswapV2Pair && to != address(this) ){
                taxAmount = amount.mul
                ((_buyCount>_reduceBuyTaxAt)
                    ?_finalBuyTax:_initialBuyTax).div(100
                );
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap && 
                to == uniswapV2Pair && 
                swapEnabled && 
                contractTokenBalance>_taxSwapThreshold && 
                _buyCount>_preventSwapBefore
            ){
                uint256 getMin = (contractTokenBalance > _maxTaxSwap)?_maxTaxSwap:contractTokenBalance;
                uint256 amountToSwap = (amount>getMin)?getMin:amount;
                swapTokensForEth(amountToSwap);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount > 0){
          _balances[address(this)] = _balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function initialize() external onlyOwner {
        require(!tradingOpen,"init already called");
        uint256 tokenAmount = balanceOf(address(this)).sub(_tTotal.mul(_initialBuyTax).div(100));
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
            .createPair(address(this), uniswapV2Router.WETH()
        );
        uniswapV2Router.addLiquidityETH{value: address(this).balance} (
            address(this),
            tokenAmount,
            0,
            0,
            _msgSender(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); 
    }

    function openTrade() external onlyOwner {
        require(!tradingOpen,"trading already open");
        swapEnabled = true;
        tradingOpen = true;
        emit TradingOpened();
    }

    function removeLimit() external onlyOwner {
        limitEffect = false;
        _maxTxAmount= _tTotal;
        _maxWalletSize= _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
        emit MaxWalletSizeUpdated(_tTotal);
    }
    
    function setTax(uint256 _valueBuy, uint256 _valueSell) external onlyOwner {
        require(_valueBuy <= 20 && _valueSell <= 30 && tradingOpen, "Exceeds value");
        _finalBuyTax = _valueBuy;
        _finalSellTax = _valueSell;
        emit FinalTax(_valueBuy, _valueSell);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_valueBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_valueSell","type":"uint256"}],"name":"FinalTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxWalletSize","type":"uint256"}],"name":"MaxWalletSizeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","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":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_valueBuy","type":"uint256"},{"internalType":"uint256","name":"_valueSell","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]

608060405260058055600560065560006007556009600a6200002291906200060c565b620f42406200003291906200065d565b6008556009600a6200004591906200060c565b620f42406200005591906200065d565b6009556001600b60156101000a81548160ff0219169083151502179055506000600b60166101000a81548160ff0219169083151502179055506000600b60176101000a81548160ff021916908315150217905550348015620000b657600080fd5b506000620000c96200034660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001776200034660201b60201c565b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620001c791906200060c565b6305f5e100620001d891906200065d565b60016000620001ec6200034660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200024c6200023e6200034e60201b60201c565b60016200037760201b60201c565b6200026161dead60016200037760201b60201c565b620002743060016200037760201b60201c565b620002a9600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200037760201b60201c565b620002b96200034660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200031891906200060c565b6305f5e1006200032991906200065d565b604051620003389190620006b9565b60405180910390a362000759565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620003876200034660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000417576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200040e9062000737565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200050057808604811115620004d857620004d762000472565b5b6001851615620004e85780820291505b8081029050620004f885620004a1565b9450620004b8565b94509492505050565b6000826200051b5760019050620005ee565b816200052b5760009050620005ee565b81600181146200054457600281146200054f5762000585565b6001915050620005ee565b60ff84111562000564576200056362000472565b5b8360020a9150848211156200057e576200057d62000472565b5b50620005ee565b5060208310610133831016604e8410600b8410161715620005bf5782820a905083811115620005b957620005b862000472565b5b620005ee565b620005ce8484846001620004ae565b92509050818404811115620005e857620005e762000472565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200061982620005f5565b91506200062683620005ff565b9250620006557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000509565b905092915050565b60006200066a82620005f5565b91506200067783620005f5565b92508282026200068781620005f5565b91508282048414831517620006a157620006a062000472565b5b5092915050565b620006b381620005f5565b82525050565b6000602082019050620006d06000830184620006a8565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200071f602083620006d6565b91506200072c82620006e7565b602082019050919050565b60006020820190508181036000830152620007528162000710565b9050919050565b6133da80620007696000396000f3fe6080604052600436106101235760003560e01c80637d1db4a5116100a0578063a9059cbb11610064578063a9059cbb146103ac578063bf474bed146103e9578063dd62ed3e14610414578063df8408fe14610451578063fb201b1d1461047a5761012a565b80637d1db4a5146102e95780638129fc1c146103145780638da5cb5b1461032b5780638f9a55c01461035657806395d89b41146103815761012a565b8063313ce567116100e7578063313ce5671461022a5780636225658914610255578063667f65261461026c57806370a0823114610295578063715018a6146102d25761012a565b806306fdde031461012f578063095ea7b31461015a5780630faee56f1461019757806318160ddd146101c257806323b872dd146101ed5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b50610144610491565b6040516101519190612476565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190612531565b6104ce565b60405161018e919061258c565b60405180910390f35b3480156101a357600080fd5b506101ac6104ec565b6040516101b991906125b6565b60405180910390f35b3480156101ce57600080fd5b506101d761050b565b6040516101e491906125b6565b60405180910390f35b3480156101f957600080fd5b50610214600480360381019061020f91906125d1565b61052f565b604051610221919061258c565b60405180910390f35b34801561023657600080fd5b5061023f610608565b60405161024c9190612640565b60405180910390f35b34801561026157600080fd5b5061026a610611565b005b34801561027857600080fd5b50610293600480360381019061028e919061265b565b6107af565b005b3480156102a157600080fd5b506102bc60048036038101906102b7919061269b565b6108f8565b6040516102c991906125b6565b60405180910390f35b3480156102de57600080fd5b506102e7610941565b005b3480156102f557600080fd5b506102fe610a94565b60405161030b91906125b6565b60405180910390f35b34801561032057600080fd5b50610329610a9a565b005b34801561033757600080fd5b50610340610ff6565b60405161034d91906126d7565b60405180910390f35b34801561036257600080fd5b5061036b61101f565b60405161037891906125b6565b60405180910390f35b34801561038d57600080fd5b50610396611025565b6040516103a39190612476565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190612531565b611062565b6040516103e0919061258c565b60405180910390f35b3480156103f557600080fd5b506103fe611080565b60405161040b91906125b6565b60405180910390f35b34801561042057600080fd5b5061043b600480360381019061043691906126f2565b61109f565b60405161044891906125b6565b60405180910390f35b34801561045d57600080fd5b506104786004803603810190610473919061275e565b611126565b005b34801561048657600080fd5b5061048f611216565b005b60606040518060400160405280600e81526020017f43727970746e6174697665204149000000000000000000000000000000000000815250905090565b60006104e26104db61135f565b8484611367565b6001905092915050565b6009600a6104fa9190612900565b620f4240610508919061294b565b81565b60006009600a61051b9190612900565b6305f5e10061052a919061294b565b905090565b600061053c8484846114fb565b6105fd8461054861135f565b6105f88560405180606001604052806028815260200161337d60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105ae61135f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ece9092919063ffffffff16565b611367565b600190509392505050565b60006009905090565b61061961135f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069d906129d9565b60405180910390fd5b6000600b60156101000a81548160ff0219169083151502179055506009600a6106cf9190612900565b6305f5e1006106de919061294b565b6008819055506009600a6106f29190612900565b6305f5e100610701919061294b565b6009819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6107369190612900565b6305f5e100610745919061294b565b60405161075291906125b6565b60405180910390a17ffb1fe1002b7550e87616e67793dbb7d3f437a79c2688c372c66dc170dbcb0efd6009600a6107899190612900565b6305f5e100610798919061294b565b6040516107a591906125b6565b60405180910390a1565b6107b761135f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906129d9565b60405180910390fd5b601482111580156108565750601e8111155b801561086e5750600b60149054906101000a900460ff165b6108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a490612a45565b60405180910390fd5b81600581905550806006819055507f78009e5656a5c60b3c047015fb856b2efbc6f42beed76119406d7d4e3fc161f482826040516108ec929190612a65565b60405180910390a15050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61094961135f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cd906129d9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60085481565b610aa261135f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b26906129d9565b60405180910390fd5b600b60149054906101000a900460ff1615610b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7690612ada565b60405180910390fd5b6000610bde610bc76064610bb960146009600a610b9c9190612900565b6305f5e100610bab919061294b565b611f3290919063ffffffff16565b611fac90919063ffffffff16565b610bd0306108f8565b611ff690919063ffffffff16565b9050737a250d5630b4cf539739df2c5dacb4c659f2488d600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c7e30600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610c6a9190612900565b6305f5e100610c79919061294b565b611367565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ceb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0f9190612b0f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbc9190612b0f565b6040518363ffffffff1660e01b8152600401610dd9929190612b3c565b6020604051808303816000875af1158015610df8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1c9190612b0f565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473084600080610ea861135f565b426040518863ffffffff1660e01b8152600401610eca96959493929190612baa565b60606040518083038185885af1158015610ee8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f0d9190612c20565b505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610faf929190612c73565b6020604051808303816000875af1158015610fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff29190612cb1565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b60606040518060400160405280600481526020017f434e414900000000000000000000000000000000000000000000000000000000815250905090565b600061107661106f61135f565b84846114fb565b6001905092915050565b6009600a61108e9190612900565b620186a061109c919061294b565b81565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61112e61135f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b2906129d9565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61121e61135f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a2906129d9565b60405180910390fd5b600b60149054906101000a900460ff16156112fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f290612d2a565b60405180910390fd5b6001600b60176101000a81548160ff0219169083151502179055506001600b60146101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113d15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140790612d96565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114ee91906125b6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115655750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90612e02565b60405180910390fd5b600081116115e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115de90612e94565b60405180910390fd5b60006115f1610ff6565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561165f575061162f610ff6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c1157600b60149054906101000a900460ff1661175957600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117195750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f90612f00565b60405180910390fd5b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118045750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561185a5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561192b57600b60159054906101000a900460ff1615611912576008548211156118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090612f6c565b60405180910390fd5b600954826118c6856108f8565b6118d09190612f8c565b1115611911576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119089061300c565b60405180910390fd5b5b600760008154809291906119259061302c565b91905055505b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119b457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119fa576119f360646119e56019600754116119d25760236119d6565b6006545b85611f3290919063ffffffff16565b611fac90919063ffffffff16565b9050611ac6565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a8357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ac557611ac26064611ab4601960075411611aa1576014611aa5565b6005545b85611f3290919063ffffffff16565b611fac90919063ffffffff16565b90505b5b6000611ad1306108f8565b9050600b60169054906101000a900460ff16158015611b3d5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b555750600b60179054906101000a900460ff165b8015611b7b57506009600a611b6a9190612900565b620186a0611b78919061294b565b81115b8015611b8957506019600754115b15611c0f5760006009600a611b9e9190612900565b620f4240611bac919061294b565b8211611bb85781611bd5565b6009600a611bc69190612900565b620f4240611bd4919061294b565b5b90506000818511611be65784611be8565b815b9050611bf381612040565b60004790506000811115611c0b57611c0a476122b9565b5b5050505b505b6000811115611d1557611c6c81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232590919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d0c91906125b6565b60405180910390a35b611d6782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff690919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e0e611dc08284611ff690919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232590919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611eb38486611ff690919063ffffffff16565b604051611ec091906125b6565b60405180910390a350505050565b6000838311158290611f16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0d9190612476565b60405180910390fd5b5060008385611f259190613074565b9050809150509392505050565b6000808303611f445760009050611fa6565b60008284611f52919061294b565b9050828482611f6191906130d7565b14611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f989061317a565b60405180910390fd5b809150505b92915050565b6000611fee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612383565b905092915050565b600061203883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ece565b905092915050565b6001600b60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120785761207761319a565b5b6040519080825280602002602001820160405280156120a65781602001602082028036833780820191505090505b50905030816000815181106120be576120bd6131c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121899190612b0f565b8160018151811061219d5761219c6131c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061220430600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611367565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122689594939291906132b6565b600060405180830381600087803b15801561228257600080fd5b505af1158015612296573d6000803e3d6000fd5b50505050506000600b60166101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612321573d6000803e3d6000fd5b5050565b60008082846123349190612f8c565b905083811015612379576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123709061335c565b60405180910390fd5b8091505092915050565b600080831182906123ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c19190612476565b60405180910390fd5b50600083856123d991906130d7565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612420578082015181840152602081019050612405565b60008484015250505050565b6000601f19601f8301169050919050565b6000612448826123e6565b61245281856123f1565b9350612462818560208601612402565b61246b8161242c565b840191505092915050565b60006020820190508181036000830152612490818461243d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124c88261249d565b9050919050565b6124d8816124bd565b81146124e357600080fd5b50565b6000813590506124f5816124cf565b92915050565b6000819050919050565b61250e816124fb565b811461251957600080fd5b50565b60008135905061252b81612505565b92915050565b6000806040838503121561254857612547612498565b5b6000612556858286016124e6565b92505060206125678582860161251c565b9150509250929050565b60008115159050919050565b61258681612571565b82525050565b60006020820190506125a1600083018461257d565b92915050565b6125b0816124fb565b82525050565b60006020820190506125cb60008301846125a7565b92915050565b6000806000606084860312156125ea576125e9612498565b5b60006125f8868287016124e6565b9350506020612609868287016124e6565b925050604061261a8682870161251c565b9150509250925092565b600060ff82169050919050565b61263a81612624565b82525050565b60006020820190506126556000830184612631565b92915050565b6000806040838503121561267257612671612498565b5b60006126808582860161251c565b92505060206126918582860161251c565b9150509250929050565b6000602082840312156126b1576126b0612498565b5b60006126bf848285016124e6565b91505092915050565b6126d1816124bd565b82525050565b60006020820190506126ec60008301846126c8565b92915050565b6000806040838503121561270957612708612498565b5b6000612717858286016124e6565b9250506020612728858286016124e6565b9150509250929050565b61273b81612571565b811461274657600080fd5b50565b60008135905061275881612732565b92915050565b6000806040838503121561277557612774612498565b5b6000612783858286016124e6565b925050602061279485828601612749565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561282457808604811115612800576127ff61279e565b5b600185161561280f5780820291505b808102905061281d856127cd565b94506127e4565b94509492505050565b60008261283d57600190506128f9565b8161284b57600090506128f9565b8160018114612861576002811461286b5761289a565b60019150506128f9565b60ff84111561287d5761287c61279e565b5b8360020a9150848211156128945761289361279e565b5b506128f9565b5060208310610133831016604e8410600b84101617156128cf5782820a9050838111156128ca576128c961279e565b5b6128f9565b6128dc84848460016127da565b925090508184048111156128f3576128f261279e565b5b81810290505b9392505050565b600061290b826124fb565b915061291683612624565b92506129437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461282d565b905092915050565b6000612956826124fb565b9150612961836124fb565b925082820261296f816124fb565b915082820484148315176129865761298561279e565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129c36020836123f1565b91506129ce8261298d565b602082019050919050565b600060208201905081810360008301526129f2816129b6565b9050919050565b7f457863656564732076616c756500000000000000000000000000000000000000600082015250565b6000612a2f600d836123f1565b9150612a3a826129f9565b602082019050919050565b60006020820190508181036000830152612a5e81612a22565b9050919050565b6000604082019050612a7a60008301856125a7565b612a8760208301846125a7565b9392505050565b7f696e697420616c72656164792063616c6c656400000000000000000000000000600082015250565b6000612ac46013836123f1565b9150612acf82612a8e565b602082019050919050565b60006020820190508181036000830152612af381612ab7565b9050919050565b600081519050612b09816124cf565b92915050565b600060208284031215612b2557612b24612498565b5b6000612b3384828501612afa565b91505092915050565b6000604082019050612b5160008301856126c8565b612b5e60208301846126c8565b9392505050565b6000819050919050565b6000819050919050565b6000612b94612b8f612b8a84612b65565b612b6f565b6124fb565b9050919050565b612ba481612b79565b82525050565b600060c082019050612bbf60008301896126c8565b612bcc60208301886125a7565b612bd96040830187612b9b565b612be66060830186612b9b565b612bf360808301856126c8565b612c0060a08301846125a7565b979650505050505050565b600081519050612c1a81612505565b92915050565b600080600060608486031215612c3957612c38612498565b5b6000612c4786828701612c0b565b9350506020612c5886828701612c0b565b9250506040612c6986828701612c0b565b9150509250925092565b6000604082019050612c8860008301856126c8565b612c9560208301846125a7565b9392505050565b600081519050612cab81612732565b92915050565b600060208284031215612cc757612cc6612498565b5b6000612cd584828501612c9c565b91505092915050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000612d146014836123f1565b9150612d1f82612cde565b602082019050919050565b60006020820190508181036000830152612d4381612d07565b9050919050565b7f45524332303a20617070726f766520746865207a65726f206164647265737300600082015250565b6000612d80601f836123f1565b9150612d8b82612d4a565b602082019050919050565b60006020820190508181036000830152612daf81612d73565b9050919050565b7f45524332303a207472616e7366657220746865207a65726f2061646472657373600082015250565b6000612dec6020836123f1565b9150612df782612db6565b602082019050919050565b60006020820190508181036000830152612e1b81612ddf565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612e7e6029836123f1565b9150612e8982612e22565b604082019050919050565b60006020820190508181036000830152612ead81612e71565b9050919050565b7f74726164696e67206973206e6f7420796574206f70656e000000000000000000600082015250565b6000612eea6017836123f1565b9150612ef582612eb4565b602082019050919050565b60006020820190508181036000830152612f1981612edd565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612f566019836123f1565b9150612f6182612f20565b602082019050919050565b60006020820190508181036000830152612f8581612f49565b9050919050565b6000612f97826124fb565b9150612fa2836124fb565b9250828201905080821115612fba57612fb961279e565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000612ff6601a836123f1565b915061300182612fc0565b602082019050919050565b6000602082019050818103600083015261302581612fe9565b9050919050565b6000613037826124fb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130695761306861279e565b5b600182019050919050565b600061307f826124fb565b915061308a836124fb565b92508282039050818111156130a2576130a161279e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130e2826124fb565b91506130ed836124fb565b9250826130fd576130fc6130a8565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006131646021836123f1565b915061316f82613108565b604082019050919050565b6000602082019050818103600083015261319381613157565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61322d816124bd565b82525050565b600061323f8383613224565b60208301905092915050565b6000602082019050919050565b6000613263826131f8565b61326d8185613203565b935061327883613214565b8060005b838110156132a95781516132908882613233565b975061329b8361324b565b92505060018101905061327c565b5085935050505092915050565b600060a0820190506132cb60008301886125a7565b6132d86020830187612b9b565b81810360408301526132ea8186613258565b90506132f960608301856126c8565b61330660808301846125a7565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613346601b836123f1565b915061335182613310565b602082019050919050565b6000602082019050818103600083015261337581613339565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122026eb1975171cf9c4812721f9f5ac6b9bb86ab64208f36c83820a2cd5b78074a864736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101235760003560e01c80637d1db4a5116100a0578063a9059cbb11610064578063a9059cbb146103ac578063bf474bed146103e9578063dd62ed3e14610414578063df8408fe14610451578063fb201b1d1461047a5761012a565b80637d1db4a5146102e95780638129fc1c146103145780638da5cb5b1461032b5780638f9a55c01461035657806395d89b41146103815761012a565b8063313ce567116100e7578063313ce5671461022a5780636225658914610255578063667f65261461026c57806370a0823114610295578063715018a6146102d25761012a565b806306fdde031461012f578063095ea7b31461015a5780630faee56f1461019757806318160ddd146101c257806323b872dd146101ed5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b50610144610491565b6040516101519190612476565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190612531565b6104ce565b60405161018e919061258c565b60405180910390f35b3480156101a357600080fd5b506101ac6104ec565b6040516101b991906125b6565b60405180910390f35b3480156101ce57600080fd5b506101d761050b565b6040516101e491906125b6565b60405180910390f35b3480156101f957600080fd5b50610214600480360381019061020f91906125d1565b61052f565b604051610221919061258c565b60405180910390f35b34801561023657600080fd5b5061023f610608565b60405161024c9190612640565b60405180910390f35b34801561026157600080fd5b5061026a610611565b005b34801561027857600080fd5b50610293600480360381019061028e919061265b565b6107af565b005b3480156102a157600080fd5b506102bc60048036038101906102b7919061269b565b6108f8565b6040516102c991906125b6565b60405180910390f35b3480156102de57600080fd5b506102e7610941565b005b3480156102f557600080fd5b506102fe610a94565b60405161030b91906125b6565b60405180910390f35b34801561032057600080fd5b50610329610a9a565b005b34801561033757600080fd5b50610340610ff6565b60405161034d91906126d7565b60405180910390f35b34801561036257600080fd5b5061036b61101f565b60405161037891906125b6565b60405180910390f35b34801561038d57600080fd5b50610396611025565b6040516103a39190612476565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190612531565b611062565b6040516103e0919061258c565b60405180910390f35b3480156103f557600080fd5b506103fe611080565b60405161040b91906125b6565b60405180910390f35b34801561042057600080fd5b5061043b600480360381019061043691906126f2565b61109f565b60405161044891906125b6565b60405180910390f35b34801561045d57600080fd5b506104786004803603810190610473919061275e565b611126565b005b34801561048657600080fd5b5061048f611216565b005b60606040518060400160405280600e81526020017f43727970746e6174697665204149000000000000000000000000000000000000815250905090565b60006104e26104db61135f565b8484611367565b6001905092915050565b6009600a6104fa9190612900565b620f4240610508919061294b565b81565b60006009600a61051b9190612900565b6305f5e10061052a919061294b565b905090565b600061053c8484846114fb565b6105fd8461054861135f565b6105f88560405180606001604052806028815260200161337d60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105ae61135f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ece9092919063ffffffff16565b611367565b600190509392505050565b60006009905090565b61061961135f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069d906129d9565b60405180910390fd5b6000600b60156101000a81548160ff0219169083151502179055506009600a6106cf9190612900565b6305f5e1006106de919061294b565b6008819055506009600a6106f29190612900565b6305f5e100610701919061294b565b6009819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6107369190612900565b6305f5e100610745919061294b565b60405161075291906125b6565b60405180910390a17ffb1fe1002b7550e87616e67793dbb7d3f437a79c2688c372c66dc170dbcb0efd6009600a6107899190612900565b6305f5e100610798919061294b565b6040516107a591906125b6565b60405180910390a1565b6107b761135f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906129d9565b60405180910390fd5b601482111580156108565750601e8111155b801561086e5750600b60149054906101000a900460ff165b6108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a490612a45565b60405180910390fd5b81600581905550806006819055507f78009e5656a5c60b3c047015fb856b2efbc6f42beed76119406d7d4e3fc161f482826040516108ec929190612a65565b60405180910390a15050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61094961135f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cd906129d9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60085481565b610aa261135f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b26906129d9565b60405180910390fd5b600b60149054906101000a900460ff1615610b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7690612ada565b60405180910390fd5b6000610bde610bc76064610bb960146009600a610b9c9190612900565b6305f5e100610bab919061294b565b611f3290919063ffffffff16565b611fac90919063ffffffff16565b610bd0306108f8565b611ff690919063ffffffff16565b9050737a250d5630b4cf539739df2c5dacb4c659f2488d600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c7e30600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610c6a9190612900565b6305f5e100610c79919061294b565b611367565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ceb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0f9190612b0f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbc9190612b0f565b6040518363ffffffff1660e01b8152600401610dd9929190612b3c565b6020604051808303816000875af1158015610df8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1c9190612b0f565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473084600080610ea861135f565b426040518863ffffffff1660e01b8152600401610eca96959493929190612baa565b60606040518083038185885af1158015610ee8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f0d9190612c20565b505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610faf929190612c73565b6020604051808303816000875af1158015610fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff29190612cb1565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b60606040518060400160405280600481526020017f434e414900000000000000000000000000000000000000000000000000000000815250905090565b600061107661106f61135f565b84846114fb565b6001905092915050565b6009600a61108e9190612900565b620186a061109c919061294b565b81565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61112e61135f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b2906129d9565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61121e61135f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a2906129d9565b60405180910390fd5b600b60149054906101000a900460ff16156112fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f290612d2a565b60405180910390fd5b6001600b60176101000a81548160ff0219169083151502179055506001600b60146101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113d15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140790612d96565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114ee91906125b6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115655750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90612e02565b60405180910390fd5b600081116115e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115de90612e94565b60405180910390fd5b60006115f1610ff6565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561165f575061162f610ff6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c1157600b60149054906101000a900460ff1661175957600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117195750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f90612f00565b60405180910390fd5b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118045750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561185a5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561192b57600b60159054906101000a900460ff1615611912576008548211156118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090612f6c565b60405180910390fd5b600954826118c6856108f8565b6118d09190612f8c565b1115611911576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119089061300c565b60405180910390fd5b5b600760008154809291906119259061302c565b91905055505b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119b457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119fa576119f360646119e56019600754116119d25760236119d6565b6006545b85611f3290919063ffffffff16565b611fac90919063ffffffff16565b9050611ac6565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a8357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ac557611ac26064611ab4601960075411611aa1576014611aa5565b6005545b85611f3290919063ffffffff16565b611fac90919063ffffffff16565b90505b5b6000611ad1306108f8565b9050600b60169054906101000a900460ff16158015611b3d5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b555750600b60179054906101000a900460ff165b8015611b7b57506009600a611b6a9190612900565b620186a0611b78919061294b565b81115b8015611b8957506019600754115b15611c0f5760006009600a611b9e9190612900565b620f4240611bac919061294b565b8211611bb85781611bd5565b6009600a611bc69190612900565b620f4240611bd4919061294b565b5b90506000818511611be65784611be8565b815b9050611bf381612040565b60004790506000811115611c0b57611c0a476122b9565b5b5050505b505b6000811115611d1557611c6c81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232590919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d0c91906125b6565b60405180910390a35b611d6782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff690919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e0e611dc08284611ff690919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232590919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611eb38486611ff690919063ffffffff16565b604051611ec091906125b6565b60405180910390a350505050565b6000838311158290611f16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0d9190612476565b60405180910390fd5b5060008385611f259190613074565b9050809150509392505050565b6000808303611f445760009050611fa6565b60008284611f52919061294b565b9050828482611f6191906130d7565b14611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f989061317a565b60405180910390fd5b809150505b92915050565b6000611fee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612383565b905092915050565b600061203883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ece565b905092915050565b6001600b60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120785761207761319a565b5b6040519080825280602002602001820160405280156120a65781602001602082028036833780820191505090505b50905030816000815181106120be576120bd6131c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121899190612b0f565b8160018151811061219d5761219c6131c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061220430600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611367565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122689594939291906132b6565b600060405180830381600087803b15801561228257600080fd5b505af1158015612296573d6000803e3d6000fd5b50505050506000600b60166101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612321573d6000803e3d6000fd5b5050565b60008082846123349190612f8c565b905083811015612379576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123709061335c565b60405180910390fd5b8091505092915050565b600080831182906123ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c19190612476565b60405180910390fd5b50600083856123d991906130d7565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612420578082015181840152602081019050612405565b60008484015250505050565b6000601f19601f8301169050919050565b6000612448826123e6565b61245281856123f1565b9350612462818560208601612402565b61246b8161242c565b840191505092915050565b60006020820190508181036000830152612490818461243d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124c88261249d565b9050919050565b6124d8816124bd565b81146124e357600080fd5b50565b6000813590506124f5816124cf565b92915050565b6000819050919050565b61250e816124fb565b811461251957600080fd5b50565b60008135905061252b81612505565b92915050565b6000806040838503121561254857612547612498565b5b6000612556858286016124e6565b92505060206125678582860161251c565b9150509250929050565b60008115159050919050565b61258681612571565b82525050565b60006020820190506125a1600083018461257d565b92915050565b6125b0816124fb565b82525050565b60006020820190506125cb60008301846125a7565b92915050565b6000806000606084860312156125ea576125e9612498565b5b60006125f8868287016124e6565b9350506020612609868287016124e6565b925050604061261a8682870161251c565b9150509250925092565b600060ff82169050919050565b61263a81612624565b82525050565b60006020820190506126556000830184612631565b92915050565b6000806040838503121561267257612671612498565b5b60006126808582860161251c565b92505060206126918582860161251c565b9150509250929050565b6000602082840312156126b1576126b0612498565b5b60006126bf848285016124e6565b91505092915050565b6126d1816124bd565b82525050565b60006020820190506126ec60008301846126c8565b92915050565b6000806040838503121561270957612708612498565b5b6000612717858286016124e6565b9250506020612728858286016124e6565b9150509250929050565b61273b81612571565b811461274657600080fd5b50565b60008135905061275881612732565b92915050565b6000806040838503121561277557612774612498565b5b6000612783858286016124e6565b925050602061279485828601612749565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561282457808604811115612800576127ff61279e565b5b600185161561280f5780820291505b808102905061281d856127cd565b94506127e4565b94509492505050565b60008261283d57600190506128f9565b8161284b57600090506128f9565b8160018114612861576002811461286b5761289a565b60019150506128f9565b60ff84111561287d5761287c61279e565b5b8360020a9150848211156128945761289361279e565b5b506128f9565b5060208310610133831016604e8410600b84101617156128cf5782820a9050838111156128ca576128c961279e565b5b6128f9565b6128dc84848460016127da565b925090508184048111156128f3576128f261279e565b5b81810290505b9392505050565b600061290b826124fb565b915061291683612624565b92506129437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461282d565b905092915050565b6000612956826124fb565b9150612961836124fb565b925082820261296f816124fb565b915082820484148315176129865761298561279e565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129c36020836123f1565b91506129ce8261298d565b602082019050919050565b600060208201905081810360008301526129f2816129b6565b9050919050565b7f457863656564732076616c756500000000000000000000000000000000000000600082015250565b6000612a2f600d836123f1565b9150612a3a826129f9565b602082019050919050565b60006020820190508181036000830152612a5e81612a22565b9050919050565b6000604082019050612a7a60008301856125a7565b612a8760208301846125a7565b9392505050565b7f696e697420616c72656164792063616c6c656400000000000000000000000000600082015250565b6000612ac46013836123f1565b9150612acf82612a8e565b602082019050919050565b60006020820190508181036000830152612af381612ab7565b9050919050565b600081519050612b09816124cf565b92915050565b600060208284031215612b2557612b24612498565b5b6000612b3384828501612afa565b91505092915050565b6000604082019050612b5160008301856126c8565b612b5e60208301846126c8565b9392505050565b6000819050919050565b6000819050919050565b6000612b94612b8f612b8a84612b65565b612b6f565b6124fb565b9050919050565b612ba481612b79565b82525050565b600060c082019050612bbf60008301896126c8565b612bcc60208301886125a7565b612bd96040830187612b9b565b612be66060830186612b9b565b612bf360808301856126c8565b612c0060a08301846125a7565b979650505050505050565b600081519050612c1a81612505565b92915050565b600080600060608486031215612c3957612c38612498565b5b6000612c4786828701612c0b565b9350506020612c5886828701612c0b565b9250506040612c6986828701612c0b565b9150509250925092565b6000604082019050612c8860008301856126c8565b612c9560208301846125a7565b9392505050565b600081519050612cab81612732565b92915050565b600060208284031215612cc757612cc6612498565b5b6000612cd584828501612c9c565b91505092915050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000612d146014836123f1565b9150612d1f82612cde565b602082019050919050565b60006020820190508181036000830152612d4381612d07565b9050919050565b7f45524332303a20617070726f766520746865207a65726f206164647265737300600082015250565b6000612d80601f836123f1565b9150612d8b82612d4a565b602082019050919050565b60006020820190508181036000830152612daf81612d73565b9050919050565b7f45524332303a207472616e7366657220746865207a65726f2061646472657373600082015250565b6000612dec6020836123f1565b9150612df782612db6565b602082019050919050565b60006020820190508181036000830152612e1b81612ddf565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612e7e6029836123f1565b9150612e8982612e22565b604082019050919050565b60006020820190508181036000830152612ead81612e71565b9050919050565b7f74726164696e67206973206e6f7420796574206f70656e000000000000000000600082015250565b6000612eea6017836123f1565b9150612ef582612eb4565b602082019050919050565b60006020820190508181036000830152612f1981612edd565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612f566019836123f1565b9150612f6182612f20565b602082019050919050565b60006020820190508181036000830152612f8581612f49565b9050919050565b6000612f97826124fb565b9150612fa2836124fb565b9250828201905080821115612fba57612fb961279e565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000612ff6601a836123f1565b915061300182612fc0565b602082019050919050565b6000602082019050818103600083015261302581612fe9565b9050919050565b6000613037826124fb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130695761306861279e565b5b600182019050919050565b600061307f826124fb565b915061308a836124fb565b92508282039050818111156130a2576130a161279e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130e2826124fb565b91506130ed836124fb565b9250826130fd576130fc6130a8565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006131646021836123f1565b915061316f82613108565b604082019050919050565b6000602082019050818103600083015261319381613157565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61322d816124bd565b82525050565b600061323f8383613224565b60208301905092915050565b6000602082019050919050565b6000613263826131f8565b61326d8185613203565b935061327883613214565b8060005b838110156132a95781516132908882613233565b975061329b8361324b565b92505060018101905061327c565b5085935050505092915050565b600060a0820190506132cb60008301886125a7565b6132d86020830187612b9b565b81810360408301526132ea8186613258565b90506132f960608301856126c8565b61330660808301846125a7565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613346601b836123f1565b915061335182613310565b602082019050919050565b6000602082019050818103600083015261337581613339565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122026eb1975171cf9c4812721f9f5ac6b9bb86ab64208f36c83820a2cd5b78074a864736f6c63430008130033

Deployed Bytecode Sourcemap

4135:8630:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6276:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7109:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5192:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6553:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7278:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6462:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12191:234;;;;;;;;;;;;;:::i;:::-;;12437:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6656:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3218:148;;;;;;;;;;;;;:::i;:::-;;5260:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11166:817;;;;;;;;;;;;;:::i;:::-;;3004:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5320:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6367:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6783:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5119:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6958:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7599:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11991:192;;;;;;;;;;;;;:::i;:::-;;6276:83;6313:13;6346:5;;;;;;;;;;;;;;;;;6339:12;;6276:83;:::o;7109:161::-;7184:4;7201:39;7210:12;:10;:12::i;:::-;7224:7;7233:6;7201:8;:39::i;:::-;7258:4;7251:11;;7109:161;;;;:::o;5192:61::-;5042:1;5240:2;:13;;;;:::i;:::-;5230:7;:23;;;;:::i;:::-;5192:61;:::o;6553:95::-;6606:7;5042:1;5097:2;:13;;;;:::i;:::-;5085:9;:25;;;;:::i;:::-;6626:14;;6553:95;:::o;7278:313::-;7376:4;7393:36;7403:6;7411:9;7422:6;7393:9;:36::i;:::-;7440:121;7449:6;7457:12;:10;:12::i;:::-;7471:89;7509:6;7471:89;;;;;;;;;;;;;;;;;:11;:19;7483:6;7471:19;;;;;;;;;;;;;;;:33;7491:12;:10;:12::i;:::-;7471:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7440:8;:121::i;:::-;7579:4;7572:11;;7278:313;;;;;:::o;6462:83::-;6503:5;5042:1;6521:16;;6462:83;:::o;12191:234::-;3141:12;:10;:12::i;:::-;3131:22;;:6;;;;;;;;;;:22;;;3123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12258:5:::1;12244:11;;:19;;;;;;;;;;;;;;;;;;5042:1;5097:2;:13;;;;:::i;:::-;5085:9;:25;;;;:::i;:::-;12274:12;:21;;;;5042:1;5097:2;:13;;;;:::i;:::-;5085:9;:25;;;;:::i;:::-;12306:14;:23;;;;12345:27;5042:1;5097:2;:13;;;;:::i;:::-;5085:9;:25;;;;:::i;:::-;12345:27;;;;;;:::i;:::-;;;;;;;;12388:29;5042:1;5097:2;:13;;;;:::i;:::-;5085:9;:25;;;;:::i;:::-;12388:29;;;;;;:::i;:::-;;;;;;;;12191:234::o:0;12437:288::-;3141:12;:10;:12::i;:::-;3131:22;;:6;;;;;;;;;;:22;;;3123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12543:2:::1;12530:9;:15;;:35;;;;;12563:2;12549:10;:16;;12530:35;:50;;;;;12569:11;;;;;;;;;;;12530:50;12522:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;12624:9;12609:12;:24;;;;12660:10;12644:13;:26;;;;12686:31;12695:9;12706:10;12686:31;;;;;;;:::i;:::-;;;;;;;;12437:288:::0;;:::o;6656:119::-;6722:7;6749:9;:18;6759:7;6749:18;;;;;;;;;;;;;;;;6742:25;;6656:119;;;:::o;3218:148::-;3141:12;:10;:12::i;:::-;3131:22;;:6;;;;;;;;;;:22;;;3123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3325:1:::1;3288:40;;3309:6;::::0;::::1;;;;;;;;3288:40;;;;;;;;;;;;3356:1;3339:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3218:148::o:0;5260:53::-;;;;:::o;11166:817::-;3141:12;:10;:12::i;:::-;3131:22;;:6;;;;;;;;;;:22;;;3123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11227:11:::1;;;;;;;;;;;11226:12;11218:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;11272:19;11294:66;11323:36;11355:3;11323:27;4563:2;5042:1;5097:2;:13;;;;:::i;:::-;5085:9;:25;;;;:::i;:::-;11323:11;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;11294:24;11312:4;11294:9;:24::i;:::-;:28;;:66;;;;:::i;:::-;11272:88;;11408:42;11371:15;;:80;;;;;;;;;;;;;;;;;;11462:58;11479:4;11494:15;;;;;;;;;;;5042:1;5097:2;:13;;;;:::i;:::-;5085:9;:25;;;;:::i;:::-;11462:8;:58::i;:::-;11565:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11547:69;;;11625:4;11632:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11547:118;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11531:13;;:134;;;;;;;;;;;;;;;;;;11676:15;;;;;;;;;;;:31;;;11715:21;11761:4;11781:11;11807:1;11823::::0;11839:12:::1;:10;:12::i;:::-;11866:15;11676:216;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11910:13;;;;;;;;;;;11903:29;;;11941:15;;;;;;;;;;;11959:14;11903:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11207:776;11166:817::o:0;3004:79::-;3042:7;3069:6;;;;;;;;;;;3062:13;;3004:79;:::o;5320:55::-;;;;:::o;6367:87::-;6406:13;6439:7;;;;;;;;;;;;;;;;;6432:14;;6367:87;:::o;6783:167::-;6861:4;6878:42;6888:12;:10;:12::i;:::-;6902:9;6913:6;6878:9;:42::i;:::-;6938:4;6931:11;;6783:167;;;;:::o;5119:66::-;5042:1;5172:2;:13;;;;:::i;:::-;5163:6;:22;;;;:::i;:::-;5119:66;:::o;6958:143::-;7039:7;7066:11;:18;7078:5;7066:18;;;;;;;;;;;;;;;:27;7085:7;7066:27;;;;;;;;;;;;;;;;7059:34;;6958:143;;;;:::o;7599:130::-;3141:12;:10;:12::i;:::-;3131:22;;:6;;;;;;;;;;:22;;;3123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7713:8:::1;7683:18;:27;7702:7;7683:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;7599:130:::0;;:::o;11991:192::-;3141:12;:10;:12::i;:::-;3131:22;;:6;;;;;;;;;;:22;;;3123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12051:11:::1;;;;;;;;;;;12050:12;12042:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;12111:4;12097:11;;:18;;;;;;;;;;;;;;;;;;12140:4;12126:11;;:18;;;;;;;;;;;;;;;;;;12160:15;;;;;;;;;;11991:192::o:0;761:98::-;814:7;841:10;834:17;;761:98;:::o;7737:276::-;7847:1;7830:19;;:5;:19;;;;:44;;;;;7872:1;7853:21;;:7;:21;;;;7830:44;7822:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;7951:6;7921:11;:18;7933:5;7921:18;;;;;;;;;;;;;;;:27;7940:7;7921:27;;;;;;;;;;;;;;;:36;;;;7989:7;7973:32;;7982:5;7973:32;;;7998:6;7973:32;;;;;;:::i;:::-;;;;;;;;7737:276;;;:::o;8021:2546::-;8125:1;8109:18;;:4;:18;;;;:38;;;;;8145:1;8131:16;;:2;:16;;;;8109:38;8101:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;8212:1;8203:6;:10;8195:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8272:17;8316:7;:5;:7::i;:::-;8308:15;;:4;:15;;;;:32;;;;;8333:7;:5;:7::i;:::-;8327:13;;:2;:13;;;;8308:32;8304:1903;;;8362:11;;;;;;;;;;;8357:197;;8423:18;:24;8442:4;8423:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;8451:18;:22;8470:2;8451:22;;;;;;;;;;;;;;;;;;;;;;;;;8423:50;8394:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;8357:197;8583:13;;;;;;;;;;;8575:21;;:4;:21;;;:55;;;;;8614:15;;;;;;;;;;;8600:30;;:2;:30;;;;8575:55;:83;;;;;8636:18;:22;8655:2;8636:22;;;;;;;;;;;;;;;;;;;;;;;;;8634:24;8575:83;8571:377;;;8684:11;;;;;;;;;;;8680:222;;;8738:12;;8728:6;:22;;8720:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8837:14;;8827:6;8811:13;8821:2;8811:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8803:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8680:222;8921:9;;:11;;;;;;;;;:::i;:::-;;;;;;8571:377;8987:13;;;;;;;;;;;8981:19;;:2;:19;;;:44;;;;;9020:4;9004:21;;:4;:21;;;;8981:44;8976:473;;;9058:138;9174:3;9058:111;4714:2;9089:9;;:26;9088:80;;4613:2;9088:80;;;9139:13;;9088:80;9058:6;:10;;:111;;;;:::i;:::-;:115;;:138;;;;:::i;:::-;9046:150;;8976:473;;;9230:13;;;;;;;;;;;9222:21;;:4;:21;;;:44;;;;;9261:4;9247:19;;:2;:19;;;;9222:44;9218:231;;;9299:134;9411:3;9299:107;4663:2;9329:9;;:25;9328:77;;4563:2;9328:77;;;9378:12;;9328:77;9299:6;:10;;:107;;;;:::i;:::-;:111;;:134;;;;:::i;:::-;9287:146;;9218:231;8976:473;9465:28;9496:24;9514:4;9496:9;:24::i;:::-;9465:55;;9558:6;;;;;;;;;;;9557:7;:48;;;;;9592:13;;;;;;;;;;;9586:19;;:2;:19;;;9557:48;:81;;;;;9627:11;;;;;;;;;;;9557:81;:141;;;;;5042:1;5172:2;:13;;;;:::i;:::-;5163:6;:22;;;;:::i;:::-;9660:20;:38;9557:141;:191;;;;;4767:2;9720:9;;:28;9557:191;9535:661;;;9782:14;5042:1;5240:2;:13;;;;:::i;:::-;5230:7;:23;;;;:::i;:::-;9800:20;:34;9799:69;;9848:20;9799:69;;;5042:1;5240:2;:13;;;;:::i;:::-;5230:7;:23;;;;:::i;:::-;9799:69;9782:86;;9887:20;9918:6;9911;:13;9910:29;;9933:6;9910:29;;;9926:6;9910:29;9887:52;;9958:30;9975:12;9958:16;:30::i;:::-;10007:26;10036:21;10007:50;;10100:1;10079:18;:22;10076:105;;;10126:35;10139:21;10126:12;:35::i;:::-;10076:105;9763:433;;;9535:661;8342:1865;8304:1903;10234:1;10222:9;:13;10219:165;;;10276:39;10305:9;10276;:24;10294:4;10276:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10249:9;:24;10267:4;10249:24;;;;;;;;;;;;;;;:66;;;;10356:4;10333:39;;10342:4;10333:39;;;10362:9;10333:39;;;;;;:::i;:::-;;;;;;;;10219:165;10410:27;10430:6;10410:9;:15;10420:4;10410:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10394:9;:15;10404:4;10394:15;;;;;;;;;;;;;;;:43;;;;10462:40;10480:21;10491:9;10480:6;:10;;:21;;;;:::i;:::-;10462:9;:13;10472:2;10462:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10448:9;:13;10458:2;10448:13;;;;;;;;;;;;;;;:54;;;;10533:2;10518:41;;10527:4;10518:41;;;10537:21;10548:9;10537:6;:10;;:21;;;;:::i;:::-;10518:41;;;;;;:::i;:::-;;;;;;;;8090:2477;8021:2546;;;:::o;1898:190::-;1984:7;2017:1;2012;:6;;2020:12;2004:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2044:9;2060:1;2056;:5;;;;:::i;:::-;2044:17;;2079:1;2072:8;;;1898:190;;;;;:::o;2096:246::-;2154:7;2183:1;2178;:6;2174:47;;2208:1;2201:8;;;;2174:47;2231:9;2247:1;2243;:5;;;;:::i;:::-;2231:17;;2276:1;2271;2267;:5;;;;:::i;:::-;:10;2259:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2333:1;2326:8;;;2096:246;;;;;:::o;2350:132::-;2408:7;2435:39;2439:1;2442;2435:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2428:46;;2350:132;;;;:::o;1754:136::-;1812:7;1839:43;1843:1;1846;1839:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1832:50;;1754:136;;;;:::o;10675:483::-;5855:4;5846:6;;:13;;;;;;;;;;;;;;;;;;10753:21:::1;10791:1;10777:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10753:40;;10822:4;10804;10809:1;10804:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10848:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10838:4;10843:1;10838:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10881:62;10898:4;10913:15;;;;;;;;;;;10931:11;10881:8;:62::i;:::-;10954:15;;;;;;;;;;;:66;;;11035:11;11061:1;11077:4;11104;11124:15;10954:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10742:416;5891:5:::0;5882:6;;:14;;;;;;;;;;;;;;;;;;10675:483;:::o;10575:92::-;10632:10;;;;;;;;;;;:19;;:27;10652:6;10632:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10575:92;:::o;1567:179::-;1625:7;1645:9;1661:1;1657;:5;;;;:::i;:::-;1645:17;;1686:1;1681;:6;;1673:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1737:1;1730:8;;;1567:179;;;;:::o;2490:189::-;2576:7;2608:1;2604;:5;2611:12;2596:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2635:9;2651:1;2647;:5;;;;:::i;:::-;2635:17;;2670:1;2663:8;;;2490:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:474::-;4921:6;4929;4978:2;4966:9;4957:7;4953:23;4949:32;4946:119;;;4984:79;;:::i;:::-;4946:119;5104:1;5129:53;5174:7;5165:6;5154:9;5150:22;5129:53;:::i;:::-;5119:63;;5075:117;5231:2;5257:53;5302:7;5293:6;5282:9;5278:22;5257:53;:::i;:::-;5247:63;;5202:118;4853:474;;;;;:::o;5333:329::-;5392:6;5441:2;5429:9;5420:7;5416:23;5412:32;5409:119;;;5447:79;;:::i;:::-;5409:119;5567:1;5592:53;5637:7;5628:6;5617:9;5613:22;5592:53;:::i;:::-;5582:63;;5538:117;5333:329;;;;:::o;5668:118::-;5755:24;5773:5;5755:24;:::i;:::-;5750:3;5743:37;5668:118;;:::o;5792:222::-;5885:4;5923:2;5912:9;5908:18;5900:26;;5936:71;6004:1;5993:9;5989:17;5980:6;5936:71;:::i;:::-;5792:222;;;;:::o;6020:474::-;6088:6;6096;6145:2;6133:9;6124:7;6120:23;6116:32;6113:119;;;6151:79;;:::i;:::-;6113:119;6271:1;6296:53;6341:7;6332:6;6321:9;6317:22;6296:53;:::i;:::-;6286:63;;6242:117;6398:2;6424:53;6469:7;6460:6;6449:9;6445:22;6424:53;:::i;:::-;6414:63;;6369:118;6020:474;;;;;:::o;6500:116::-;6570:21;6585:5;6570:21;:::i;:::-;6563:5;6560:32;6550:60;;6606:1;6603;6596:12;6550:60;6500:116;:::o;6622:133::-;6665:5;6703:6;6690:20;6681:29;;6719:30;6743:5;6719:30;:::i;:::-;6622:133;;;;:::o;6761:468::-;6826:6;6834;6883:2;6871:9;6862:7;6858:23;6854:32;6851:119;;;6889:79;;:::i;:::-;6851:119;7009:1;7034:53;7079:7;7070:6;7059:9;7055:22;7034:53;:::i;:::-;7024:63;;6980:117;7136:2;7162:50;7204:7;7195:6;7184:9;7180:22;7162:50;:::i;:::-;7152:60;;7107:115;6761:468;;;;;:::o;7235:180::-;7283:77;7280:1;7273:88;7380:4;7377:1;7370:15;7404:4;7401:1;7394:15;7421:102;7463:8;7510:5;7507:1;7503:13;7482:34;;7421:102;;;:::o;7529:848::-;7590:5;7597:4;7621:6;7612:15;;7645:5;7636:14;;7659:712;7680:1;7670:8;7667:15;7659:712;;;7775:4;7770:3;7766:14;7760:4;7757:24;7754:50;;;7784:18;;:::i;:::-;7754:50;7834:1;7824:8;7820:16;7817:451;;;8249:4;8242:5;8238:16;8229:25;;7817:451;8299:4;8293;8289:15;8281:23;;8329:32;8352:8;8329:32;:::i;:::-;8317:44;;7659:712;;;7529:848;;;;;;;:::o;8383:1073::-;8437:5;8628:8;8618:40;;8649:1;8640:10;;8651:5;;8618:40;8677:4;8667:36;;8694:1;8685:10;;8696:5;;8667:36;8763:4;8811:1;8806:27;;;;8847:1;8842:191;;;;8756:277;;8806:27;8824:1;8815:10;;8826:5;;;8842:191;8887:3;8877:8;8874:17;8871:43;;;8894:18;;:::i;:::-;8871:43;8943:8;8940:1;8936:16;8927:25;;8978:3;8971:5;8968:14;8965:40;;;8985:18;;:::i;:::-;8965:40;9018:5;;;8756:277;;9142:2;9132:8;9129:16;9123:3;9117:4;9114:13;9110:36;9092:2;9082:8;9079:16;9074:2;9068:4;9065:12;9061:35;9045:111;9042:246;;;9198:8;9192:4;9188:19;9179:28;;9233:3;9226:5;9223:14;9220:40;;;9240:18;;:::i;:::-;9220:40;9273:5;;9042:246;9313:42;9351:3;9341:8;9335:4;9332:1;9313:42;:::i;:::-;9298:57;;;;9387:4;9382:3;9378:14;9371:5;9368:25;9365:51;;;9396:18;;:::i;:::-;9365:51;9445:4;9438:5;9434:16;9425:25;;8383:1073;;;;;;:::o;9462:281::-;9520:5;9544:23;9562:4;9544:23;:::i;:::-;9536:31;;9588:25;9604:8;9588:25;:::i;:::-;9576:37;;9632:104;9669:66;9659:8;9653:4;9632:104;:::i;:::-;9623:113;;9462:281;;;;:::o;9749:410::-;9789:7;9812:20;9830:1;9812:20;:::i;:::-;9807:25;;9846:20;9864:1;9846:20;:::i;:::-;9841:25;;9901:1;9898;9894:9;9923:30;9941:11;9923:30;:::i;:::-;9912:41;;10102:1;10093:7;10089:15;10086:1;10083:22;10063:1;10056:9;10036:83;10013:139;;10132:18;;:::i;:::-;10013:139;9797:362;9749:410;;;;:::o;10165:182::-;10305:34;10301:1;10293:6;10289:14;10282:58;10165:182;:::o;10353:366::-;10495:3;10516:67;10580:2;10575:3;10516:67;:::i;:::-;10509:74;;10592:93;10681:3;10592:93;:::i;:::-;10710:2;10705:3;10701:12;10694:19;;10353:366;;;:::o;10725:419::-;10891:4;10929:2;10918:9;10914:18;10906:26;;10978:9;10972:4;10968:20;10964:1;10953:9;10949:17;10942:47;11006:131;11132:4;11006:131;:::i;:::-;10998:139;;10725:419;;;:::o;11150:163::-;11290:15;11286:1;11278:6;11274:14;11267:39;11150:163;:::o;11319:366::-;11461:3;11482:67;11546:2;11541:3;11482:67;:::i;:::-;11475:74;;11558:93;11647:3;11558:93;:::i;:::-;11676:2;11671:3;11667:12;11660:19;;11319:366;;;:::o;11691:419::-;11857:4;11895:2;11884:9;11880:18;11872:26;;11944:9;11938:4;11934:20;11930:1;11919:9;11915:17;11908:47;11972:131;12098:4;11972:131;:::i;:::-;11964:139;;11691:419;;;:::o;12116:332::-;12237:4;12275:2;12264:9;12260:18;12252:26;;12288:71;12356:1;12345:9;12341:17;12332:6;12288:71;:::i;:::-;12369:72;12437:2;12426:9;12422:18;12413:6;12369:72;:::i;:::-;12116:332;;;;;:::o;12454:169::-;12594:21;12590:1;12582:6;12578:14;12571:45;12454:169;:::o;12629:366::-;12771:3;12792:67;12856:2;12851:3;12792:67;:::i;:::-;12785:74;;12868:93;12957:3;12868:93;:::i;:::-;12986:2;12981:3;12977:12;12970:19;;12629:366;;;:::o;13001:419::-;13167:4;13205:2;13194:9;13190:18;13182:26;;13254:9;13248:4;13244:20;13240:1;13229:9;13225:17;13218:47;13282:131;13408:4;13282:131;:::i;:::-;13274:139;;13001:419;;;:::o;13426:143::-;13483:5;13514:6;13508:13;13499:22;;13530:33;13557:5;13530:33;:::i;:::-;13426:143;;;;:::o;13575:351::-;13645:6;13694:2;13682:9;13673:7;13669:23;13665:32;13662:119;;;13700:79;;:::i;:::-;13662:119;13820:1;13845:64;13901:7;13892:6;13881:9;13877:22;13845:64;:::i;:::-;13835:74;;13791:128;13575:351;;;;:::o;13932:332::-;14053:4;14091:2;14080:9;14076:18;14068:26;;14104:71;14172:1;14161:9;14157:17;14148:6;14104:71;:::i;:::-;14185:72;14253:2;14242:9;14238:18;14229:6;14185:72;:::i;:::-;13932:332;;;;;:::o;14270:85::-;14315:7;14344:5;14333:16;;14270:85;;;:::o;14361:60::-;14389:3;14410:5;14403:12;;14361:60;;;:::o;14427:158::-;14485:9;14518:61;14536:42;14545:32;14571:5;14545:32;:::i;:::-;14536:42;:::i;:::-;14518:61;:::i;:::-;14505:74;;14427:158;;;:::o;14591:147::-;14686:45;14725:5;14686:45;:::i;:::-;14681:3;14674:58;14591:147;;:::o;14744:807::-;14993:4;15031:3;15020:9;15016:19;15008:27;;15045:71;15113:1;15102:9;15098:17;15089:6;15045:71;:::i;:::-;15126:72;15194:2;15183:9;15179:18;15170:6;15126:72;:::i;:::-;15208:80;15284:2;15273:9;15269:18;15260:6;15208:80;:::i;:::-;15298;15374:2;15363:9;15359:18;15350:6;15298:80;:::i;:::-;15388:73;15456:3;15445:9;15441:19;15432:6;15388:73;:::i;:::-;15471;15539:3;15528:9;15524:19;15515:6;15471:73;:::i;:::-;14744:807;;;;;;;;;:::o;15557:143::-;15614:5;15645:6;15639:13;15630:22;;15661:33;15688:5;15661:33;:::i;:::-;15557:143;;;;:::o;15706:663::-;15794:6;15802;15810;15859:2;15847:9;15838:7;15834:23;15830:32;15827:119;;;15865:79;;:::i;:::-;15827:119;15985:1;16010:64;16066:7;16057:6;16046:9;16042:22;16010:64;:::i;:::-;16000:74;;15956:128;16123:2;16149:64;16205:7;16196:6;16185:9;16181:22;16149:64;:::i;:::-;16139:74;;16094:129;16262:2;16288:64;16344:7;16335:6;16324:9;16320:22;16288:64;:::i;:::-;16278:74;;16233:129;15706:663;;;;;:::o;16375:332::-;16496:4;16534:2;16523:9;16519:18;16511:26;;16547:71;16615:1;16604:9;16600:17;16591:6;16547:71;:::i;:::-;16628:72;16696:2;16685:9;16681:18;16672:6;16628:72;:::i;:::-;16375:332;;;;;:::o;16713:137::-;16767:5;16798:6;16792:13;16783:22;;16814:30;16838:5;16814:30;:::i;:::-;16713:137;;;;:::o;16856:345::-;16923:6;16972:2;16960:9;16951:7;16947:23;16943:32;16940:119;;;16978:79;;:::i;:::-;16940:119;17098:1;17123:61;17176:7;17167:6;17156:9;17152:22;17123:61;:::i;:::-;17113:71;;17069:125;16856:345;;;;:::o;17207:170::-;17347:22;17343:1;17335:6;17331:14;17324:46;17207:170;:::o;17383:366::-;17525:3;17546:67;17610:2;17605:3;17546:67;:::i;:::-;17539:74;;17622:93;17711:3;17622:93;:::i;:::-;17740:2;17735:3;17731:12;17724:19;;17383:366;;;:::o;17755:419::-;17921:4;17959:2;17948:9;17944:18;17936:26;;18008:9;18002:4;17998:20;17994:1;17983:9;17979:17;17972:47;18036:131;18162:4;18036:131;:::i;:::-;18028:139;;17755:419;;;:::o;18180:181::-;18320:33;18316:1;18308:6;18304:14;18297:57;18180:181;:::o;18367:366::-;18509:3;18530:67;18594:2;18589:3;18530:67;:::i;:::-;18523:74;;18606:93;18695:3;18606:93;:::i;:::-;18724:2;18719:3;18715:12;18708:19;;18367:366;;;:::o;18739:419::-;18905:4;18943:2;18932:9;18928:18;18920:26;;18992:9;18986:4;18982:20;18978:1;18967:9;18963:17;18956:47;19020:131;19146:4;19020:131;:::i;:::-;19012:139;;18739:419;;;:::o;19164:182::-;19304:34;19300:1;19292:6;19288:14;19281:58;19164:182;:::o;19352:366::-;19494:3;19515:67;19579:2;19574:3;19515:67;:::i;:::-;19508:74;;19591:93;19680:3;19591:93;:::i;:::-;19709:2;19704:3;19700:12;19693:19;;19352:366;;;:::o;19724:419::-;19890:4;19928:2;19917:9;19913:18;19905:26;;19977:9;19971:4;19967:20;19963:1;19952:9;19948:17;19941:47;20005:131;20131:4;20005:131;:::i;:::-;19997:139;;19724:419;;;:::o;20149:228::-;20289:34;20285:1;20277:6;20273:14;20266:58;20358:11;20353:2;20345:6;20341:15;20334:36;20149:228;:::o;20383:366::-;20525:3;20546:67;20610:2;20605:3;20546:67;:::i;:::-;20539:74;;20622:93;20711:3;20622:93;:::i;:::-;20740:2;20735:3;20731:12;20724:19;;20383:366;;;:::o;20755:419::-;20921:4;20959:2;20948:9;20944:18;20936:26;;21008:9;21002:4;20998:20;20994:1;20983:9;20979:17;20972:47;21036:131;21162:4;21036:131;:::i;:::-;21028:139;;20755:419;;;:::o;21180:173::-;21320:25;21316:1;21308:6;21304:14;21297:49;21180:173;:::o;21359:366::-;21501:3;21522:67;21586:2;21581:3;21522:67;:::i;:::-;21515:74;;21598:93;21687:3;21598:93;:::i;:::-;21716:2;21711:3;21707:12;21700:19;;21359:366;;;:::o;21731:419::-;21897:4;21935:2;21924:9;21920:18;21912:26;;21984:9;21978:4;21974:20;21970:1;21959:9;21955:17;21948:47;22012:131;22138:4;22012:131;:::i;:::-;22004:139;;21731:419;;;:::o;22156:175::-;22296:27;22292:1;22284:6;22280:14;22273:51;22156:175;:::o;22337:366::-;22479:3;22500:67;22564:2;22559:3;22500:67;:::i;:::-;22493:74;;22576:93;22665:3;22576:93;:::i;:::-;22694:2;22689:3;22685:12;22678:19;;22337:366;;;:::o;22709:419::-;22875:4;22913:2;22902:9;22898:18;22890:26;;22962:9;22956:4;22952:20;22948:1;22937:9;22933:17;22926:47;22990:131;23116:4;22990:131;:::i;:::-;22982:139;;22709:419;;;:::o;23134:191::-;23174:3;23193:20;23211:1;23193:20;:::i;:::-;23188:25;;23227:20;23245:1;23227:20;:::i;:::-;23222:25;;23270:1;23267;23263:9;23256:16;;23291:3;23288:1;23285:10;23282:36;;;23298:18;;:::i;:::-;23282:36;23134:191;;;;:::o;23331:176::-;23471:28;23467:1;23459:6;23455:14;23448:52;23331:176;:::o;23513:366::-;23655:3;23676:67;23740:2;23735:3;23676:67;:::i;:::-;23669:74;;23752:93;23841:3;23752:93;:::i;:::-;23870:2;23865:3;23861:12;23854:19;;23513:366;;;:::o;23885:419::-;24051:4;24089:2;24078:9;24074:18;24066:26;;24138:9;24132:4;24128:20;24124:1;24113:9;24109:17;24102:47;24166:131;24292:4;24166:131;:::i;:::-;24158:139;;23885:419;;;:::o;24310:233::-;24349:3;24372:24;24390:5;24372:24;:::i;:::-;24363:33;;24418:66;24411:5;24408:77;24405:103;;24488:18;;:::i;:::-;24405:103;24535:1;24528:5;24524:13;24517:20;;24310:233;;;:::o;24549:194::-;24589:4;24609:20;24627:1;24609:20;:::i;:::-;24604:25;;24643:20;24661:1;24643:20;:::i;:::-;24638:25;;24687:1;24684;24680:9;24672:17;;24711:1;24705:4;24702:11;24699:37;;;24716:18;;:::i;:::-;24699:37;24549:194;;;;:::o;24749:180::-;24797:77;24794:1;24787:88;24894:4;24891:1;24884:15;24918:4;24915:1;24908:15;24935:185;24975:1;24992:20;25010:1;24992:20;:::i;:::-;24987:25;;25026:20;25044:1;25026:20;:::i;:::-;25021:25;;25065:1;25055:35;;25070:18;;:::i;:::-;25055:35;25112:1;25109;25105:9;25100:14;;24935:185;;;;:::o;25126:220::-;25266:34;25262:1;25254:6;25250:14;25243:58;25335:3;25330:2;25322:6;25318:15;25311:28;25126:220;:::o;25352:366::-;25494:3;25515:67;25579:2;25574:3;25515:67;:::i;:::-;25508:74;;25591:93;25680:3;25591:93;:::i;:::-;25709:2;25704:3;25700:12;25693:19;;25352:366;;;:::o;25724:419::-;25890:4;25928:2;25917:9;25913:18;25905:26;;25977:9;25971:4;25967:20;25963:1;25952:9;25948:17;25941:47;26005:131;26131:4;26005:131;:::i;:::-;25997:139;;25724:419;;;:::o;26149:180::-;26197:77;26194:1;26187:88;26294:4;26291:1;26284:15;26318:4;26315:1;26308:15;26335:180;26383:77;26380:1;26373:88;26480:4;26477:1;26470:15;26504:4;26501:1;26494:15;26521:114;26588:6;26622:5;26616:12;26606:22;;26521:114;;;:::o;26641:184::-;26740:11;26774:6;26769:3;26762:19;26814:4;26809:3;26805:14;26790:29;;26641:184;;;;:::o;26831:132::-;26898:4;26921:3;26913:11;;26951:4;26946:3;26942:14;26934:22;;26831:132;;;:::o;26969:108::-;27046:24;27064:5;27046:24;:::i;:::-;27041:3;27034:37;26969:108;;:::o;27083:179::-;27152:10;27173:46;27215:3;27207:6;27173:46;:::i;:::-;27251:4;27246:3;27242:14;27228:28;;27083:179;;;;:::o;27268:113::-;27338:4;27370;27365:3;27361:14;27353:22;;27268:113;;;:::o;27417:732::-;27536:3;27565:54;27613:5;27565:54;:::i;:::-;27635:86;27714:6;27709:3;27635:86;:::i;:::-;27628:93;;27745:56;27795:5;27745:56;:::i;:::-;27824:7;27855:1;27840:284;27865:6;27862:1;27859:13;27840:284;;;27941:6;27935:13;27968:63;28027:3;28012:13;27968:63;:::i;:::-;27961:70;;28054:60;28107:6;28054:60;:::i;:::-;28044:70;;27900:224;27887:1;27884;27880:9;27875:14;;27840:284;;;27844:14;28140:3;28133:10;;27541:608;;;27417:732;;;;:::o;28155:831::-;28418:4;28456:3;28445:9;28441:19;28433:27;;28470:71;28538:1;28527:9;28523:17;28514:6;28470:71;:::i;:::-;28551:80;28627:2;28616:9;28612:18;28603:6;28551:80;:::i;:::-;28678:9;28672:4;28668:20;28663:2;28652:9;28648:18;28641:48;28706:108;28809:4;28800:6;28706:108;:::i;:::-;28698:116;;28824:72;28892:2;28881:9;28877:18;28868:6;28824:72;:::i;:::-;28906:73;28974:3;28963:9;28959:19;28950:6;28906:73;:::i;:::-;28155:831;;;;;;;;:::o;28992:177::-;29132:29;29128:1;29120:6;29116:14;29109:53;28992:177;:::o;29175:366::-;29317:3;29338:67;29402:2;29397:3;29338:67;:::i;:::-;29331:74;;29414:93;29503:3;29414:93;:::i;:::-;29532:2;29527:3;29523:12;29516:19;;29175:366;;;:::o;29547:419::-;29713:4;29751:2;29740:9;29736:18;29728:26;;29800:9;29794:4;29790:20;29786:1;29775:9;29771:17;29764:47;29828:131;29954:4;29828:131;:::i;:::-;29820:139;;29547:419;;;:::o

Swarm Source

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