ETH Price: $3,342.36 (-0.96%)
Gas: 4.62 Gwei

Token

BugdRoid (BUGDROID)
 

Overview

Max Total Supply

1,000,000,000 BUGDROID

Holders

167

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
collectiblesdigital.eth
Balance
1,422,990.542855462 BUGDROID

Value
$0.00
0x7c40eb76713df2f18243e7f9fb5d53d601b31d25
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:
BugdRoid

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-25
*/

/*

Website  : http://bugdroiderc.pro
Telegram : https://t.me/bugdroid_google

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.22;

//GAS OPTIMIZED ERROR MESSAGES
error ERC20InvalidSender(address sender);
error ERC20InvalidReceiver(address receiver);
error ERC20InvalidApprover(address approver);
error ERC20InvalidSpender(address spender);
error ERC20TransferFailed();
error ERC20ZeroTransfer();
error PaymentFailed();


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

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

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

interface IDexSwapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract BugdRoid is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private _name = "BugdRoid";
    string private _symbol = "BUGDROID";
    uint8 private _decimals = 9; 

    uint256 public buyTax;
    uint256 public sellTax;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWlAddress;

    uint256 private _totalSupply = 1_000_000_000 * 10**_decimals;

    uint256 public _maxTxAmount =  _totalSupply.mul(1).div(100);     
    uint256 public _walletMax = _totalSupply.mul(1).div(50);        

    uint256 public swapThreshold = _totalSupply.mul(1).div(100);

    address public marketingWallet;

    bool public swapEnabled = true;
    bool public swapbylimit = true;
    bool public EnableTxLimit = true;
    bool public EnableWalletLimit = true;

    IDexSwapRouter public dexRouter;
    address public dexPair;

    bool public tradingEnable; 
    bool public transferSniperProtection;

    bool inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {

        marketingWallet = msg.sender;

        IDexSwapRouter _dexRouter = IDexSwapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        dexPair = IDexSwapFactory(_dexRouter.factory())
            .createPair(address(this), _dexRouter.WETH());

        dexRouter = _dexRouter;
        
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[address(0xdead)] = true;
        isWalletLimitExempt[address(dexPair)] = true;

        isWlAddress[address(msg.sender)] = true;
        isWlAddress[address(this)] = true;
        
        isTxLimitExempt[address(0xdead)] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(dexPair)] = true;

        buyTax = 15;
        sellTax = 30;
        transferSniperProtection = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    // BoredFrogsERC-721

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

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

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

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

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

    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 _approve(address owner, address spender, uint256 amount) private {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }

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

     //to recieve ETH from Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, 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: Exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        if (sender == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (recipient == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        if(amount == 0) {
            revert ERC20ZeroTransfer();
        }
    
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        else {

            if (!isWlAddress[sender] && !isWlAddress[recipient]) {
                if(!tradingEnable) {
                    revert ERC20TransferFailed();
                }
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (
                overMinimumTokenBalance && 
                !inSwap && 
                !isMarketPair[sender] && 
                swapEnabled &&
                !isExcludedFromFee[sender] &&
                !isExcludedFromFee[recipient]
                ) {
                swapBack(contractTokenBalance);
            }

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTxLimit) {
                require(amount <= _maxTxAmount, "Exceeds maxTxAmount");
            } 
            
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            if(EnableWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Exceeds Wallet");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;

        }

    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }


    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(isMarketPair[sender]) { 
                feeAmount = amount.mul(buyTax).div(100);
            } 
            else if(isMarketPair[recipient]) { 
                feeAmount = amount.mul(sellTax).div(100);
            }
            else if (transferSniperProtection) {
                feeAmount = amount.mul(99).div(100);
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }


    function swapBack(uint contractBalance) internal swapping {

        if(swapbylimit) contractBalance = swapThreshold;

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractBalance);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        if(amountReceived > 0)
            payable(marketingWallet).transfer(amountReceived);

    }

    function enableTrading() external onlyOwner {
        require(!tradingEnable, "Trade Enabled!");

        tradingEnable = true;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        _approve(address(this), address(dexRouter), tokenAmount);

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function rescueFunds() external { 
        require(msg.sender == marketingWallet,"Unauthorized");
        (bool os,) = payable(marketingWallet).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    function rescueTokens(address _token,uint _amount) external {
        require(msg.sender == marketingWallet,"Unauthorized");
        (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)',  marketingWallet, _amount));
        require(success, 'Token payment failed');
    }

    function setBuyFee(uint _buySide, uint _sellSide) external onlyOwner {    
        buyTax = _buySide;
        sellTax = _sellSide;
    }

    function removeLimits() external onlyOwner {
        EnableTxLimit = false;
        EnableWalletLimit =  false;
    }

    function transferProtection(bool _status) external onlyOwner {
        transferSniperProtection = _status;
    }

    function updateSetting(address[] calldata _adr, bool _status) external onlyOwner {
        for(uint i = 0; i < _adr.length; i++){
            isWlAddress[_adr[i]] = _status;
        }
    }

    function excludeFromFee(address _adr,bool _status) external onlyOwner {
        isExcludedFromFee[_adr] = _status;
    }

    function excludeWalletLimit(address _adr,bool _status) external onlyOwner {
        isWalletLimitExempt[_adr] = _status;
    }

    function excludeTxLimit(address _adr,bool _status) external onlyOwner {
        isTxLimitExempt[_adr] = _status;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        _walletMax = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }
    
    function setMarketingWallet(address _newWallet) external onlyOwner {
        marketingWallet = _newWallet;
    }

    function setSwapBackSettings(uint _threshold, bool _enabled, bool _limited)
        external
        onlyOwner
    {
        swapEnabled = _enabled;
        swapbylimit = _limited;
        swapThreshold = _threshold;
    }

    // BoredFrogsERC-721

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"ERC20TransferFailed","type":"error"},{"inputs":[],"name":"ERC20ZeroTransfer","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","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":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWlAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buySide","type":"uint256"},{"internalType":"uint256","name":"_sellSide","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_limited","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapbylimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"transferProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferSniperProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_adr","type":"address[]"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateSetting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600881526020017f42756764526f6964000000000000000000000000000000000000000000000000815250600190816200004a919062000dc0565b506040518060400160405280600881526020017f42554744524f49440000000000000000000000000000000000000000000000008152506002908162000091919062000dc0565b50600960035f6101000a81548160ff021916908360ff16021790555060035f9054906101000a900460ff16600a620000ca91906200102d565b633b9aca00620000db91906200107d565b600d556200010b6064620000fc6001600d546200095d60201b90919060201c565b620009dd60201b90919060201c565b600e556200013b60326200012c6001600d546200095d60201b90919060201c565b620009dd60201b90919060201c565b600f556200016b60646200015c6001600d546200095d60201b90919060201c565b620009dd60201b90919060201c565b6010556001601160146101000a81548160ff0219169083151502179055506001601160156101000a81548160ff0219169083151502179055506001601160166101000a81548160ff0219169083151502179055506001601160176101000a81548160ff021916908315150217905550348015620001e6575f80fd5b5062000207620001fb62000a2e60201b60201c565b62000a3560201b60201c565b3360115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002cf91906200112c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000335573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200035b91906200112c565b6040518363ffffffff1660e01b81526004016200037a9291906200116d565b6020604051808303815f875af115801562000397573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003bd91906200112c565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600f600481905550601e6005819055506001601360156101000a81548160ff021916908315150217905550600d5460065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d546040516200094e9190620011a9565b60405180910390a35062001368565b5f8083036200096f575f9050620009d7565b5f82846200097e91906200107d565b90508284826200098f9190620011f1565b14620009d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009c990620012ac565b60405180910390fd5b809150505b92915050565b5f62000a2683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000af660201b60201c565b905092915050565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f808311829062000b3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b36919062001346565b60405180910390fd5b505f838562000b4f9190620011f1565b9050809150509392505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000bd857607f821691505b60208210810362000bee5762000bed62000b93565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000c527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c15565b62000c5e868362000c15565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000ca862000ca262000c9c8462000c76565b62000c7f565b62000c76565b9050919050565b5f819050919050565b62000cc38362000c88565b62000cdb62000cd28262000caf565b84845462000c21565b825550505050565b5f90565b62000cf162000ce3565b62000cfe81848462000cb8565b505050565b5b8181101562000d255762000d195f8262000ce7565b60018101905062000d04565b5050565b601f82111562000d745762000d3e8162000bf4565b62000d498462000c06565b8101602085101562000d59578190505b62000d7162000d688562000c06565b83018262000d03565b50505b505050565b5f82821c905092915050565b5f62000d965f198460080262000d79565b1980831691505092915050565b5f62000db0838362000d85565b9150826002028217905092915050565b62000dcb8262000b5c565b67ffffffffffffffff81111562000de75762000de662000b66565b5b62000df3825462000bc0565b62000e0082828562000d29565b5f60209050601f83116001811462000e36575f841562000e21578287015190505b62000e2d858262000da3565b86555062000e9c565b601f19841662000e468662000bf4565b5f5b8281101562000e6f5784890151825560018201915060208501945060208101905062000e48565b8683101562000e8f578489015162000e8b601f89168262000d85565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000f2e5780860481111562000f065762000f0562000ea4565b5b600185161562000f165780820291505b808102905062000f268562000ed1565b945062000ee6565b94509492505050565b5f8262000f4857600190506200101a565b8162000f57575f90506200101a565b816001811462000f70576002811462000f7b5762000fb1565b60019150506200101a565b60ff84111562000f905762000f8f62000ea4565b5b8360020a91508482111562000faa5762000fa962000ea4565b5b506200101a565b5060208310610133831016604e8410600b841016171562000feb5782820a90508381111562000fe55762000fe462000ea4565b5b6200101a565b62000ffa848484600162000edd565b9250905081840481111562001014576200101362000ea4565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620010398262000c76565b9150620010468362001021565b9250620010757fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f37565b905092915050565b5f620010898262000c76565b9150620010968362000c76565b9250828202620010a68162000c76565b91508282048414831517620010c057620010bf62000ea4565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620010f682620010cb565b9050919050565b6200110881620010ea565b811462001113575f80fd5b50565b5f815190506200112681620010fd565b92915050565b5f60208284031215620011445762001143620010c7565b5b5f620011538482850162001116565b91505092915050565b6200116781620010ea565b82525050565b5f604082019050620011825f8301856200115c565b6200119160208301846200115c565b9392505050565b620011a38162000c76565b82525050565b5f602082019050620011be5f83018462001198565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620011fd8262000c76565b91506200120a8362000c76565b9250826200121d576200121c620011c4565b5b828204905092915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6200129460218362001228565b9150620012a18262001238565b604082019050919050565b5f6020820190508181035f830152620012c58162001286565b9050919050565b5f5b83811015620012eb578082015181840152602081019050620012ce565b5f8484015250505050565b5f601f19601f8301169050919050565b5f620013128262000b5c565b6200131e818562001228565b935062001330818560208601620012cc565b6200133b81620012f6565b840191505092915050565b5f6020820190508181035f83015262001360818462001306565b905092915050565b613fcb80620013765f395ff3fe608060405260043610610275575f3560e01c8063751039fc1161014e578063ae85ade6116100c0578063e6b2603b11610079578063e6b2603b1461094a578063e9fd339414610960578063ea1ce5a81461098a578063f242ab41146109b4578063f2fde38b146109de578063fb0ecfa414610a065761027c565b8063ae85ade614610830578063b94b0aef14610858578063c867d60b14610880578063cc1776d3146108bc578063dd62ed3e146108e6578063df8408fe146109225761027c565b80638b42507f116101125780638b42507f146107125780638da5cb5b1461074e57806395d89b411461077857806395fc8fdf146107a25780639a212943146107ca578063a9059cbb146107f45761027c565b8063751039fc1461066857806375f0a8741461067e5780637d1db4a5146106a8578063807c2d9c146106d25780638a8c523c146106fc5761027c565b80635342acb4116101e75780635e42358c116101ab5780635e42358c14610572578063651a89871461059c5780636ddd1713146105c457806370a08231146105ee578063715018a61461062a578063728d41c9146106405761027c565b80635342acb41461048257806357376198146104be5780635c85974f146104e65780635d098b381461050e5780635da0a467146105365761027c565b806318160ddd1161023957806318160ddd14610364578063230358521461038e57806323b872dd146103b6578063313ce567146103f25780633ecad2711461041c5780634f7041a5146104585761027c565b80630445b6671461028057806306fdde03146102aa5780630758d924146102d4578063095ea7b3146102fe5780631693e8d41461033a5761027c565b3661027c57005b5f80fd5b34801561028b575f80fd5b50610294610a2e565b6040516102a19190613191565b60405180910390f35b3480156102b5575f80fd5b506102be610a34565b6040516102cb9190613234565b60405180910390f35b3480156102df575f80fd5b506102e8610ac4565b6040516102f591906132ce565b60405180910390f35b348015610309575f80fd5b50610324600480360381019061031f9190613354565b610ae9565b60405161033191906133ac565b60405180910390f35b348015610345575f80fd5b5061034e610b06565b60405161035b91906133ac565b60405180910390f35b34801561036f575f80fd5b50610378610b19565b6040516103859190613191565b60405180910390f35b348015610399575f80fd5b506103b460048036038101906103af91906133ef565b610b22565b005b3480156103c1575f80fd5b506103dc60048036038101906103d7919061341a565b610bbb565b6040516103e991906133ac565b60405180910390f35b3480156103fd575f80fd5b50610406610cad565b6040516104139190613485565b60405180910390f35b348015610427575f80fd5b50610442600480360381019061043d919061349e565b610cc2565b60405161044f91906133ac565b60405180910390f35b348015610463575f80fd5b5061046c610cdf565b6040516104799190613191565b60405180910390f35b34801561048d575f80fd5b506104a860048036038101906104a3919061349e565b610ce5565b6040516104b591906133ac565b60405180910390f35b3480156104c9575f80fd5b506104e460048036038101906104df9190613354565b610d02565b005b3480156104f1575f80fd5b5061050c600480360381019061050791906134c9565b610eee565b005b348015610519575f80fd5b50610534600480360381019061052f919061349e565b610f74565b005b348015610541575f80fd5b5061055c6004803603810190610557919061349e565b611033565b60405161056991906133ac565b60405180910390f35b34801561057d575f80fd5b50610586611050565b60405161059391906133ac565b60405180910390f35b3480156105a7575f80fd5b506105c260048036038101906105bd91906134f4565b611063565b005b3480156105cf575f80fd5b506105d8611137565b6040516105e591906133ac565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f919061349e565b61114a565b6040516106219190613191565b60405180910390f35b348015610635575f80fd5b5061063e611190565b005b34801561064b575f80fd5b50610666600480360381019061066191906134c9565b611217565b005b348015610673575f80fd5b5061067c61129d565b005b348015610689575f80fd5b5061069261134f565b60405161069f9190613541565b60405180910390f35b3480156106b3575f80fd5b506106bc611374565b6040516106c99190613191565b60405180910390f35b3480156106dd575f80fd5b506106e661137a565b6040516106f39190613191565b60405180910390f35b348015610707575f80fd5b50610710611380565b005b34801561071d575f80fd5b506107386004803603810190610733919061349e565b611469565b60405161074591906133ac565b60405180910390f35b348015610759575f80fd5b50610762611486565b60405161076f9190613541565b60405180910390f35b348015610783575f80fd5b5061078c6114ad565b6040516107999190613234565b60405180910390f35b3480156107ad575f80fd5b506107c860048036038101906107c391906135bb565b61153d565b005b3480156107d5575f80fd5b506107de611654565b6040516107eb91906133ac565b60405180910390f35b3480156107ff575f80fd5b5061081a60048036038101906108159190613354565b611667565b60405161082791906133ac565b60405180910390f35b34801561083b575f80fd5b50610856600480360381019061085191906134f4565b611685565b005b348015610863575f80fd5b5061087e60048036038101906108799190613618565b611759565b005b34801561088b575f80fd5b506108a660048036038101906108a1919061349e565b611815565b6040516108b391906133ac565b60405180910390f35b3480156108c7575f80fd5b506108d0611832565b6040516108dd9190613191565b60405180910390f35b3480156108f1575f80fd5b5061090c60048036038101906109079190613668565b611838565b6040516109199190613191565b60405180910390f35b34801561092d575f80fd5b50610948600480360381019061094391906134f4565b6118ba565b005b348015610955575f80fd5b5061095e61198e565b005b34801561096b575f80fd5b50610974611ae9565b60405161098191906133ac565b60405180910390f35b348015610995575f80fd5b5061099e611afc565b6040516109ab91906133ac565b60405180910390f35b3480156109bf575f80fd5b506109c8611b0f565b6040516109d59190613541565b60405180910390f35b3480156109e9575f80fd5b50610a0460048036038101906109ff919061349e565b611b34565b005b348015610a11575f80fd5b50610a2c6004803603810190610a2791906136a6565b611c2a565b005b60105481565b606060018054610a4390613711565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6f90613711565b8015610aba5780601f10610a9157610100808354040283529160200191610aba565b820191905f5260205f20905b815481529060010190602001808311610a9d57829003601f168201915b5050505050905090565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610afc610af5611cb8565b8484611cbf565b6001905092915050565b601360149054906101000a900460ff1681565b5f600d54905090565b610b2a611cb8565b73ffffffffffffffffffffffffffffffffffffffff16610b48611486565b73ffffffffffffffffffffffffffffffffffffffff1614610b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b959061378b565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b5f610bc7848484611e86565b50610ca284610bd4611cb8565b610c9d856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e6365000000000000000081525060075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c54611cb8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125b99092919063ffffffff16565b611cbf565b600190509392505050565b5f60035f9054906101000a900460ff16905090565b6009602052805f5260405f205f915054906101000a900460ff1681565b60045481565b6008602052805f5260405f205f915054906101000a900460ff1681565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d88906137f3565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1660115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051602401610ddd929190613811565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610e67919061387c565b5f604051808303815f865af19150503d805f8114610ea0576040519150601f19603f3d011682016040523d82523d5f602084013e610ea5565b606091505b5050905080610ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee0906138dc565b60405180910390fd5b505050565b610ef6611cb8565b73ffffffffffffffffffffffffffffffffffffffff16610f14611486565b73ffffffffffffffffffffffffffffffffffffffff1614610f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f619061378b565b60405180910390fd5b80600e8190555050565b610f7c611cb8565b73ffffffffffffffffffffffffffffffffffffffff16610f9a611486565b73ffffffffffffffffffffffffffffffffffffffff1614610ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe79061378b565b60405180910390fd5b8060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c602052805f5260405f205f915054906101000a900460ff1681565b601160169054906101000a900460ff1681565b61106b611cb8565b73ffffffffffffffffffffffffffffffffffffffff16611089611486565b73ffffffffffffffffffffffffffffffffffffffff16146110df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d69061378b565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601160149054906101000a900460ff1681565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611198611cb8565b73ffffffffffffffffffffffffffffffffffffffff166111b6611486565b73ffffffffffffffffffffffffffffffffffffffff161461120c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112039061378b565b60405180910390fd5b6112155f61261b565b565b61121f611cb8565b73ffffffffffffffffffffffffffffffffffffffff1661123d611486565b73ffffffffffffffffffffffffffffffffffffffff1614611293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128a9061378b565b60405180910390fd5b80600f8190555050565b6112a5611cb8565b73ffffffffffffffffffffffffffffffffffffffff166112c3611486565b73ffffffffffffffffffffffffffffffffffffffff1614611319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113109061378b565b60405180910390fd5b5f601160166101000a81548160ff0219169083151502179055505f601160176101000a81548160ff021916908315150217905550565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b600f5481565b611388611cb8565b73ffffffffffffffffffffffffffffffffffffffff166113a6611486565b73ffffffffffffffffffffffffffffffffffffffff16146113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f39061378b565b60405180910390fd5b601360149054906101000a900460ff161561144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144390613944565b60405180910390fd5b6001601360146101000a81548160ff021916908315150217905550565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546114bc90613711565b80601f01602080910402602001604051908101604052809291908181526020018280546114e890613711565b80156115335780601f1061150a57610100808354040283529160200191611533565b820191905f5260205f20905b81548152906001019060200180831161151657829003601f168201915b5050505050905090565b611545611cb8565b73ffffffffffffffffffffffffffffffffffffffff16611563611486565b73ffffffffffffffffffffffffffffffffffffffff16146115b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b09061378b565b60405180910390fd5b5f5b8383905081101561164e5781600c5f8686858181106115dd576115dc613962565b5b90506020020160208101906115f2919061349e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506115bb565b50505050565b601160179054906101000a900460ff1681565b5f61167a611673611cb8565b8484611e86565b506001905092915050565b61168d611cb8565b73ffffffffffffffffffffffffffffffffffffffff166116ab611486565b73ffffffffffffffffffffffffffffffffffffffff1614611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f89061378b565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611761611cb8565b73ffffffffffffffffffffffffffffffffffffffff1661177f611486565b73ffffffffffffffffffffffffffffffffffffffff16146117d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cc9061378b565b60405180910390fd5b81601160146101000a81548160ff02191690831515021790555080601160156101000a81548160ff02191690831515021790555082601081905550505050565b600a602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6118c2611cb8565b73ffffffffffffffffffffffffffffffffffffffff166118e0611486565b73ffffffffffffffffffffffffffffffffffffffff1614611936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192d9061378b565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a14906137f3565b60405180910390fd5b5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051611a63906139b2565b5f6040518083038185875af1925050503d805f8114611a9d576040519150601f19603f3d011682016040523d82523d5f602084013e611aa2565b606091505b5050905080611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90613a10565b60405180910390fd5b50565b601160159054906101000a900460ff1681565b601360159054906101000a900460ff1681565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b3c611cb8565b73ffffffffffffffffffffffffffffffffffffffff16611b5a611486565b73ffffffffffffffffffffffffffffffffffffffff1614611bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba79061378b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1590613a9e565b60405180910390fd5b611c278161261b565b50565b611c32611cb8565b73ffffffffffffffffffffffffffffffffffffffff16611c50611486565b73ffffffffffffffffffffffffffffffffffffffff1614611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d9061378b565b60405180910390fd5b81600481905550806005819055505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d2f575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611d269190613541565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d9f575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611d969190613541565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e799190613191565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ef7575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611eee9190613541565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f67575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611f5e9190613541565b60405180910390fd5b5f8203611fa0576040517f67c8957700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601360169054906101000a900460ff1615611fc757611fc08484846126dc565b90506125b2565b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156120655750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120b157601360149054906101000a900460ff166120b0576040517ff27f64e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5f6120bb3061114a565b90505f60105482101590508080156120e05750601360169054906101000a900460ff16155b8015612133575060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561214b5750601160149054906101000a900460ff165b801561219e575060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156121f1575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612200576121ff826128a6565b5b600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561229e5750600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122b65750601160169054906101000a900460ff165b1561230157600e54841115612300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f790613b06565b60405180910390fd5b5b612388846040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125b99092919063ffffffff16565b60065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f6123d4878761298c565b6123e8576123e3878787612ae8565b6123ea565b845b9050601160179054906101000a900460ff16801561244f5750600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156124b457600f54612472826124648961114a565b612d4390919063ffffffff16565b11156124b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124aa90613b6e565b60405180910390fd5b5b6125048160065f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d4390919063ffffffff16565b60065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125a29190613191565b60405180910390a3600193505050505b9392505050565b5f838311158290612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f79190613234565b60405180910390fd5b505f838561260e9190613bb9565b9050809150509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f612764826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125b99092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127f58260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d4390919063ffffffff16565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128939190613191565b60405180910390a3600190509392505050565b6001601360166101000a81548160ff021916908315150217905550601160159054906101000a900460ff16156128dc5760105490505b5f4790506128e982612da0565b5f6128fd824761300f90919063ffffffff16565b90505f81111561296d5760115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561296b573d5f803e3d5ffd5b505b50505f601360166101000a81548160ff02191690831515021790555050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a28575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612a365760019050612ae2565b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612ad1575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612ade575f9050612ae2565b5f90505b92915050565b5f8060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612b6857612b616064612b536004548661305890919063ffffffff16565b6130cf90919063ffffffff16565b9050612c27565b60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612be657612bdf6064612bd16005548661305890919063ffffffff16565b6130cf90919063ffffffff16565b9050612c26565b601360159054906101000a900460ff1615612c2557612c226064612c1460638661305890919063ffffffff16565b6130cf90919063ffffffff16565b90505b5b5b5f811115612d2657612c7f8160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d4390919063ffffffff16565b60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d1d9190613191565b60405180910390a35b612d39818461300f90919063ffffffff16565b9150509392505050565b5f808284612d519190613bec565b905083811015612d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8d90613c69565b60405180910390fd5b8091505092915050565b5f600267ffffffffffffffff811115612dbc57612dbb613c87565b5b604051908082528060200260200182016040528015612dea5781602001602082028036833780820191505090505b50905030815f81518110612e0157612e00613962565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ea5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ec99190613cc8565b81600181518110612edd57612edc613962565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f433060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cbf565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612fa5959493929190613de3565b5f604051808303815f87803b158015612fbc575f80fd5b505af1158015612fce573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613003929190613e3b565b60405180910390a15050565b5f61305083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125b9565b905092915050565b5f808303613068575f90506130c9565b5f82846130759190613e69565b90508284826130849190613ed7565b146130c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130bb90613f77565b60405180910390fd5b809150505b92915050565b5f61311083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613118565b905092915050565b5f808311829061315e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131559190613234565b60405180910390fd5b505f838561316c9190613ed7565b9050809150509392505050565b5f819050919050565b61318b81613179565b82525050565b5f6020820190506131a45f830184613182565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156131e15780820151818401526020810190506131c6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613206826131aa565b61321081856131b4565b93506132208185602086016131c4565b613229816131ec565b840191505092915050565b5f6020820190508181035f83015261324c81846131fc565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61329661329161328c84613254565b613273565b613254565b9050919050565b5f6132a78261327c565b9050919050565b5f6132b88261329d565b9050919050565b6132c8816132ae565b82525050565b5f6020820190506132e15f8301846132bf565b92915050565b5f80fd5b5f80fd5b5f6132f982613254565b9050919050565b613309816132ef565b8114613313575f80fd5b50565b5f8135905061332481613300565b92915050565b61333381613179565b811461333d575f80fd5b50565b5f8135905061334e8161332a565b92915050565b5f806040838503121561336a576133696132e7565b5b5f61337785828601613316565b925050602061338885828601613340565b9150509250929050565b5f8115159050919050565b6133a681613392565b82525050565b5f6020820190506133bf5f83018461339d565b92915050565b6133ce81613392565b81146133d8575f80fd5b50565b5f813590506133e9816133c5565b92915050565b5f60208284031215613404576134036132e7565b5b5f613411848285016133db565b91505092915050565b5f805f60608486031215613431576134306132e7565b5b5f61343e86828701613316565b935050602061344f86828701613316565b925050604061346086828701613340565b9150509250925092565b5f60ff82169050919050565b61347f8161346a565b82525050565b5f6020820190506134985f830184613476565b92915050565b5f602082840312156134b3576134b26132e7565b5b5f6134c084828501613316565b91505092915050565b5f602082840312156134de576134dd6132e7565b5b5f6134eb84828501613340565b91505092915050565b5f806040838503121561350a576135096132e7565b5b5f61351785828601613316565b9250506020613528858286016133db565b9150509250929050565b61353b816132ef565b82525050565b5f6020820190506135545f830184613532565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261357b5761357a61355a565b5b8235905067ffffffffffffffff8111156135985761359761355e565b5b6020830191508360208202830111156135b4576135b3613562565b5b9250929050565b5f805f604084860312156135d2576135d16132e7565b5b5f84013567ffffffffffffffff8111156135ef576135ee6132eb565b5b6135fb86828701613566565b9350935050602061360e868287016133db565b9150509250925092565b5f805f6060848603121561362f5761362e6132e7565b5b5f61363c86828701613340565b935050602061364d868287016133db565b925050604061365e868287016133db565b9150509250925092565b5f806040838503121561367e5761367d6132e7565b5b5f61368b85828601613316565b925050602061369c85828601613316565b9150509250929050565b5f80604083850312156136bc576136bb6132e7565b5b5f6136c985828601613340565b92505060206136da85828601613340565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061372857607f821691505b60208210810361373b5761373a6136e4565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137756020836131b4565b915061378082613741565b602082019050919050565b5f6020820190508181035f8301526137a281613769565b9050919050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f6137dd600c836131b4565b91506137e8826137a9565b602082019050919050565b5f6020820190508181035f83015261380a816137d1565b9050919050565b5f6040820190506138245f830185613532565b6138316020830184613182565b9392505050565b5f81519050919050565b5f81905092915050565b5f61385682613838565b6138608185613842565b93506138708185602086016131c4565b80840191505092915050565b5f613887828461384c565b915081905092915050565b7f546f6b656e207061796d656e74206661696c65640000000000000000000000005f82015250565b5f6138c66014836131b4565b91506138d182613892565b602082019050919050565b5f6020820190508181035f8301526138f3816138ba565b9050919050565b7f547261646520456e61626c6564210000000000000000000000000000000000005f82015250565b5f61392e600e836131b4565b9150613939826138fa565b602082019050919050565b5f6020820190508181035f83015261395b81613922565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b50565b5f61399d5f83613842565b91506139a88261398f565b5f82019050919050565b5f6139bc82613992565b9150819050919050565b7f5472616e73616374696f6e204661696c656421210000000000000000000000005f82015250565b5f6139fa6014836131b4565b9150613a05826139c6565b602082019050919050565b5f6020820190508181035f830152613a27816139ee565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613a886026836131b4565b9150613a9382613a2e565b604082019050919050565b5f6020820190508181035f830152613ab581613a7c565b9050919050565b7f45786365656473206d61785478416d6f756e74000000000000000000000000005f82015250565b5f613af06013836131b4565b9150613afb82613abc565b602082019050919050565b5f6020820190508181035f830152613b1d81613ae4565b9050919050565b7f457863656564732057616c6c65740000000000000000000000000000000000005f82015250565b5f613b58600e836131b4565b9150613b6382613b24565b602082019050919050565b5f6020820190508181035f830152613b8581613b4c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613bc382613179565b9150613bce83613179565b9250828203905081811115613be657613be5613b8c565b5b92915050565b5f613bf682613179565b9150613c0183613179565b9250828201905080821115613c1957613c18613b8c565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613c53601b836131b4565b9150613c5e82613c1f565b602082019050919050565b5f6020820190508181035f830152613c8081613c47565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050613cc281613300565b92915050565b5f60208284031215613cdd57613cdc6132e7565b5b5f613cea84828501613cb4565b91505092915050565b5f819050919050565b5f613d16613d11613d0c84613cf3565b613273565b613179565b9050919050565b613d2681613cfc565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613d5e816132ef565b82525050565b5f613d6f8383613d55565b60208301905092915050565b5f602082019050919050565b5f613d9182613d2c565b613d9b8185613d36565b9350613da683613d46565b805f5b83811015613dd6578151613dbd8882613d64565b9750613dc883613d7b565b925050600181019050613da9565b5085935050505092915050565b5f60a082019050613df65f830188613182565b613e036020830187613d1d565b8181036040830152613e158186613d87565b9050613e246060830185613532565b613e316080830184613182565b9695505050505050565b5f604082019050613e4e5f830185613182565b8181036020830152613e608184613d87565b90509392505050565b5f613e7382613179565b9150613e7e83613179565b9250828202613e8c81613179565b91508282048414831517613ea357613ea2613b8c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ee182613179565b9150613eec83613179565b925082613efc57613efb613eaa565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f616021836131b4565b9150613f6c82613f07565b604082019050919050565b5f6020820190508181035f830152613f8e81613f55565b905091905056fea26469706673582212202f9f2d84b3df25278a70bb634a428aec10e8e3e9b69390d852e4329b7505373364736f6c63430008160033

Deployed Bytecode

0x608060405260043610610275575f3560e01c8063751039fc1161014e578063ae85ade6116100c0578063e6b2603b11610079578063e6b2603b1461094a578063e9fd339414610960578063ea1ce5a81461098a578063f242ab41146109b4578063f2fde38b146109de578063fb0ecfa414610a065761027c565b8063ae85ade614610830578063b94b0aef14610858578063c867d60b14610880578063cc1776d3146108bc578063dd62ed3e146108e6578063df8408fe146109225761027c565b80638b42507f116101125780638b42507f146107125780638da5cb5b1461074e57806395d89b411461077857806395fc8fdf146107a25780639a212943146107ca578063a9059cbb146107f45761027c565b8063751039fc1461066857806375f0a8741461067e5780637d1db4a5146106a8578063807c2d9c146106d25780638a8c523c146106fc5761027c565b80635342acb4116101e75780635e42358c116101ab5780635e42358c14610572578063651a89871461059c5780636ddd1713146105c457806370a08231146105ee578063715018a61461062a578063728d41c9146106405761027c565b80635342acb41461048257806357376198146104be5780635c85974f146104e65780635d098b381461050e5780635da0a467146105365761027c565b806318160ddd1161023957806318160ddd14610364578063230358521461038e57806323b872dd146103b6578063313ce567146103f25780633ecad2711461041c5780634f7041a5146104585761027c565b80630445b6671461028057806306fdde03146102aa5780630758d924146102d4578063095ea7b3146102fe5780631693e8d41461033a5761027c565b3661027c57005b5f80fd5b34801561028b575f80fd5b50610294610a2e565b6040516102a19190613191565b60405180910390f35b3480156102b5575f80fd5b506102be610a34565b6040516102cb9190613234565b60405180910390f35b3480156102df575f80fd5b506102e8610ac4565b6040516102f591906132ce565b60405180910390f35b348015610309575f80fd5b50610324600480360381019061031f9190613354565b610ae9565b60405161033191906133ac565b60405180910390f35b348015610345575f80fd5b5061034e610b06565b60405161035b91906133ac565b60405180910390f35b34801561036f575f80fd5b50610378610b19565b6040516103859190613191565b60405180910390f35b348015610399575f80fd5b506103b460048036038101906103af91906133ef565b610b22565b005b3480156103c1575f80fd5b506103dc60048036038101906103d7919061341a565b610bbb565b6040516103e991906133ac565b60405180910390f35b3480156103fd575f80fd5b50610406610cad565b6040516104139190613485565b60405180910390f35b348015610427575f80fd5b50610442600480360381019061043d919061349e565b610cc2565b60405161044f91906133ac565b60405180910390f35b348015610463575f80fd5b5061046c610cdf565b6040516104799190613191565b60405180910390f35b34801561048d575f80fd5b506104a860048036038101906104a3919061349e565b610ce5565b6040516104b591906133ac565b60405180910390f35b3480156104c9575f80fd5b506104e460048036038101906104df9190613354565b610d02565b005b3480156104f1575f80fd5b5061050c600480360381019061050791906134c9565b610eee565b005b348015610519575f80fd5b50610534600480360381019061052f919061349e565b610f74565b005b348015610541575f80fd5b5061055c6004803603810190610557919061349e565b611033565b60405161056991906133ac565b60405180910390f35b34801561057d575f80fd5b50610586611050565b60405161059391906133ac565b60405180910390f35b3480156105a7575f80fd5b506105c260048036038101906105bd91906134f4565b611063565b005b3480156105cf575f80fd5b506105d8611137565b6040516105e591906133ac565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f919061349e565b61114a565b6040516106219190613191565b60405180910390f35b348015610635575f80fd5b5061063e611190565b005b34801561064b575f80fd5b50610666600480360381019061066191906134c9565b611217565b005b348015610673575f80fd5b5061067c61129d565b005b348015610689575f80fd5b5061069261134f565b60405161069f9190613541565b60405180910390f35b3480156106b3575f80fd5b506106bc611374565b6040516106c99190613191565b60405180910390f35b3480156106dd575f80fd5b506106e661137a565b6040516106f39190613191565b60405180910390f35b348015610707575f80fd5b50610710611380565b005b34801561071d575f80fd5b506107386004803603810190610733919061349e565b611469565b60405161074591906133ac565b60405180910390f35b348015610759575f80fd5b50610762611486565b60405161076f9190613541565b60405180910390f35b348015610783575f80fd5b5061078c6114ad565b6040516107999190613234565b60405180910390f35b3480156107ad575f80fd5b506107c860048036038101906107c391906135bb565b61153d565b005b3480156107d5575f80fd5b506107de611654565b6040516107eb91906133ac565b60405180910390f35b3480156107ff575f80fd5b5061081a60048036038101906108159190613354565b611667565b60405161082791906133ac565b60405180910390f35b34801561083b575f80fd5b50610856600480360381019061085191906134f4565b611685565b005b348015610863575f80fd5b5061087e60048036038101906108799190613618565b611759565b005b34801561088b575f80fd5b506108a660048036038101906108a1919061349e565b611815565b6040516108b391906133ac565b60405180910390f35b3480156108c7575f80fd5b506108d0611832565b6040516108dd9190613191565b60405180910390f35b3480156108f1575f80fd5b5061090c60048036038101906109079190613668565b611838565b6040516109199190613191565b60405180910390f35b34801561092d575f80fd5b50610948600480360381019061094391906134f4565b6118ba565b005b348015610955575f80fd5b5061095e61198e565b005b34801561096b575f80fd5b50610974611ae9565b60405161098191906133ac565b60405180910390f35b348015610995575f80fd5b5061099e611afc565b6040516109ab91906133ac565b60405180910390f35b3480156109bf575f80fd5b506109c8611b0f565b6040516109d59190613541565b60405180910390f35b3480156109e9575f80fd5b50610a0460048036038101906109ff919061349e565b611b34565b005b348015610a11575f80fd5b50610a2c6004803603810190610a2791906136a6565b611c2a565b005b60105481565b606060018054610a4390613711565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6f90613711565b8015610aba5780601f10610a9157610100808354040283529160200191610aba565b820191905f5260205f20905b815481529060010190602001808311610a9d57829003601f168201915b5050505050905090565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610afc610af5611cb8565b8484611cbf565b6001905092915050565b601360149054906101000a900460ff1681565b5f600d54905090565b610b2a611cb8565b73ffffffffffffffffffffffffffffffffffffffff16610b48611486565b73ffffffffffffffffffffffffffffffffffffffff1614610b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b959061378b565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b5f610bc7848484611e86565b50610ca284610bd4611cb8565b610c9d856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e6365000000000000000081525060075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c54611cb8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125b99092919063ffffffff16565b611cbf565b600190509392505050565b5f60035f9054906101000a900460ff16905090565b6009602052805f5260405f205f915054906101000a900460ff1681565b60045481565b6008602052805f5260405f205f915054906101000a900460ff1681565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d88906137f3565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1660115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051602401610ddd929190613811565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610e67919061387c565b5f604051808303815f865af19150503d805f8114610ea0576040519150601f19603f3d011682016040523d82523d5f602084013e610ea5565b606091505b5050905080610ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee0906138dc565b60405180910390fd5b505050565b610ef6611cb8565b73ffffffffffffffffffffffffffffffffffffffff16610f14611486565b73ffffffffffffffffffffffffffffffffffffffff1614610f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f619061378b565b60405180910390fd5b80600e8190555050565b610f7c611cb8565b73ffffffffffffffffffffffffffffffffffffffff16610f9a611486565b73ffffffffffffffffffffffffffffffffffffffff1614610ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe79061378b565b60405180910390fd5b8060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c602052805f5260405f205f915054906101000a900460ff1681565b601160169054906101000a900460ff1681565b61106b611cb8565b73ffffffffffffffffffffffffffffffffffffffff16611089611486565b73ffffffffffffffffffffffffffffffffffffffff16146110df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d69061378b565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601160149054906101000a900460ff1681565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611198611cb8565b73ffffffffffffffffffffffffffffffffffffffff166111b6611486565b73ffffffffffffffffffffffffffffffffffffffff161461120c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112039061378b565b60405180910390fd5b6112155f61261b565b565b61121f611cb8565b73ffffffffffffffffffffffffffffffffffffffff1661123d611486565b73ffffffffffffffffffffffffffffffffffffffff1614611293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128a9061378b565b60405180910390fd5b80600f8190555050565b6112a5611cb8565b73ffffffffffffffffffffffffffffffffffffffff166112c3611486565b73ffffffffffffffffffffffffffffffffffffffff1614611319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113109061378b565b60405180910390fd5b5f601160166101000a81548160ff0219169083151502179055505f601160176101000a81548160ff021916908315150217905550565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b600f5481565b611388611cb8565b73ffffffffffffffffffffffffffffffffffffffff166113a6611486565b73ffffffffffffffffffffffffffffffffffffffff16146113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f39061378b565b60405180910390fd5b601360149054906101000a900460ff161561144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144390613944565b60405180910390fd5b6001601360146101000a81548160ff021916908315150217905550565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546114bc90613711565b80601f01602080910402602001604051908101604052809291908181526020018280546114e890613711565b80156115335780601f1061150a57610100808354040283529160200191611533565b820191905f5260205f20905b81548152906001019060200180831161151657829003601f168201915b5050505050905090565b611545611cb8565b73ffffffffffffffffffffffffffffffffffffffff16611563611486565b73ffffffffffffffffffffffffffffffffffffffff16146115b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b09061378b565b60405180910390fd5b5f5b8383905081101561164e5781600c5f8686858181106115dd576115dc613962565b5b90506020020160208101906115f2919061349e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506115bb565b50505050565b601160179054906101000a900460ff1681565b5f61167a611673611cb8565b8484611e86565b506001905092915050565b61168d611cb8565b73ffffffffffffffffffffffffffffffffffffffff166116ab611486565b73ffffffffffffffffffffffffffffffffffffffff1614611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f89061378b565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611761611cb8565b73ffffffffffffffffffffffffffffffffffffffff1661177f611486565b73ffffffffffffffffffffffffffffffffffffffff16146117d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cc9061378b565b60405180910390fd5b81601160146101000a81548160ff02191690831515021790555080601160156101000a81548160ff02191690831515021790555082601081905550505050565b600a602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6118c2611cb8565b73ffffffffffffffffffffffffffffffffffffffff166118e0611486565b73ffffffffffffffffffffffffffffffffffffffff1614611936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192d9061378b565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a14906137f3565b60405180910390fd5b5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051611a63906139b2565b5f6040518083038185875af1925050503d805f8114611a9d576040519150601f19603f3d011682016040523d82523d5f602084013e611aa2565b606091505b5050905080611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90613a10565b60405180910390fd5b50565b601160159054906101000a900460ff1681565b601360159054906101000a900460ff1681565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b3c611cb8565b73ffffffffffffffffffffffffffffffffffffffff16611b5a611486565b73ffffffffffffffffffffffffffffffffffffffff1614611bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba79061378b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1590613a9e565b60405180910390fd5b611c278161261b565b50565b611c32611cb8565b73ffffffffffffffffffffffffffffffffffffffff16611c50611486565b73ffffffffffffffffffffffffffffffffffffffff1614611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d9061378b565b60405180910390fd5b81600481905550806005819055505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d2f575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611d269190613541565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d9f575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611d969190613541565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e799190613191565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ef7575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611eee9190613541565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f67575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611f5e9190613541565b60405180910390fd5b5f8203611fa0576040517f67c8957700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601360169054906101000a900460ff1615611fc757611fc08484846126dc565b90506125b2565b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156120655750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120b157601360149054906101000a900460ff166120b0576040517ff27f64e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5f6120bb3061114a565b90505f60105482101590508080156120e05750601360169054906101000a900460ff16155b8015612133575060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561214b5750601160149054906101000a900460ff165b801561219e575060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156121f1575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612200576121ff826128a6565b5b600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561229e5750600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122b65750601160169054906101000a900460ff165b1561230157600e54841115612300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f790613b06565b60405180910390fd5b5b612388846040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125b99092919063ffffffff16565b60065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f6123d4878761298c565b6123e8576123e3878787612ae8565b6123ea565b845b9050601160179054906101000a900460ff16801561244f5750600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156124b457600f54612472826124648961114a565b612d4390919063ffffffff16565b11156124b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124aa90613b6e565b60405180910390fd5b5b6125048160065f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d4390919063ffffffff16565b60065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125a29190613191565b60405180910390a3600193505050505b9392505050565b5f838311158290612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f79190613234565b60405180910390fd5b505f838561260e9190613bb9565b9050809150509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f612764826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125b99092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127f58260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d4390919063ffffffff16565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128939190613191565b60405180910390a3600190509392505050565b6001601360166101000a81548160ff021916908315150217905550601160159054906101000a900460ff16156128dc5760105490505b5f4790506128e982612da0565b5f6128fd824761300f90919063ffffffff16565b90505f81111561296d5760115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561296b573d5f803e3d5ffd5b505b50505f601360166101000a81548160ff02191690831515021790555050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a28575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612a365760019050612ae2565b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612ad1575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612ade575f9050612ae2565b5f90505b92915050565b5f8060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612b6857612b616064612b536004548661305890919063ffffffff16565b6130cf90919063ffffffff16565b9050612c27565b60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612be657612bdf6064612bd16005548661305890919063ffffffff16565b6130cf90919063ffffffff16565b9050612c26565b601360159054906101000a900460ff1615612c2557612c226064612c1460638661305890919063ffffffff16565b6130cf90919063ffffffff16565b90505b5b5b5f811115612d2657612c7f8160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d4390919063ffffffff16565b60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d1d9190613191565b60405180910390a35b612d39818461300f90919063ffffffff16565b9150509392505050565b5f808284612d519190613bec565b905083811015612d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8d90613c69565b60405180910390fd5b8091505092915050565b5f600267ffffffffffffffff811115612dbc57612dbb613c87565b5b604051908082528060200260200182016040528015612dea5781602001602082028036833780820191505090505b50905030815f81518110612e0157612e00613962565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ea5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ec99190613cc8565b81600181518110612edd57612edc613962565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f433060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cbf565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612fa5959493929190613de3565b5f604051808303815f87803b158015612fbc575f80fd5b505af1158015612fce573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613003929190613e3b565b60405180910390a15050565b5f61305083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125b9565b905092915050565b5f808303613068575f90506130c9565b5f82846130759190613e69565b90508284826130849190613ed7565b146130c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130bb90613f77565b60405180910390fd5b809150505b92915050565b5f61311083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613118565b905092915050565b5f808311829061315e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131559190613234565b60405180910390fd5b505f838561316c9190613ed7565b9050809150509392505050565b5f819050919050565b61318b81613179565b82525050565b5f6020820190506131a45f830184613182565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156131e15780820151818401526020810190506131c6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613206826131aa565b61321081856131b4565b93506132208185602086016131c4565b613229816131ec565b840191505092915050565b5f6020820190508181035f83015261324c81846131fc565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61329661329161328c84613254565b613273565b613254565b9050919050565b5f6132a78261327c565b9050919050565b5f6132b88261329d565b9050919050565b6132c8816132ae565b82525050565b5f6020820190506132e15f8301846132bf565b92915050565b5f80fd5b5f80fd5b5f6132f982613254565b9050919050565b613309816132ef565b8114613313575f80fd5b50565b5f8135905061332481613300565b92915050565b61333381613179565b811461333d575f80fd5b50565b5f8135905061334e8161332a565b92915050565b5f806040838503121561336a576133696132e7565b5b5f61337785828601613316565b925050602061338885828601613340565b9150509250929050565b5f8115159050919050565b6133a681613392565b82525050565b5f6020820190506133bf5f83018461339d565b92915050565b6133ce81613392565b81146133d8575f80fd5b50565b5f813590506133e9816133c5565b92915050565b5f60208284031215613404576134036132e7565b5b5f613411848285016133db565b91505092915050565b5f805f60608486031215613431576134306132e7565b5b5f61343e86828701613316565b935050602061344f86828701613316565b925050604061346086828701613340565b9150509250925092565b5f60ff82169050919050565b61347f8161346a565b82525050565b5f6020820190506134985f830184613476565b92915050565b5f602082840312156134b3576134b26132e7565b5b5f6134c084828501613316565b91505092915050565b5f602082840312156134de576134dd6132e7565b5b5f6134eb84828501613340565b91505092915050565b5f806040838503121561350a576135096132e7565b5b5f61351785828601613316565b9250506020613528858286016133db565b9150509250929050565b61353b816132ef565b82525050565b5f6020820190506135545f830184613532565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261357b5761357a61355a565b5b8235905067ffffffffffffffff8111156135985761359761355e565b5b6020830191508360208202830111156135b4576135b3613562565b5b9250929050565b5f805f604084860312156135d2576135d16132e7565b5b5f84013567ffffffffffffffff8111156135ef576135ee6132eb565b5b6135fb86828701613566565b9350935050602061360e868287016133db565b9150509250925092565b5f805f6060848603121561362f5761362e6132e7565b5b5f61363c86828701613340565b935050602061364d868287016133db565b925050604061365e868287016133db565b9150509250925092565b5f806040838503121561367e5761367d6132e7565b5b5f61368b85828601613316565b925050602061369c85828601613316565b9150509250929050565b5f80604083850312156136bc576136bb6132e7565b5b5f6136c985828601613340565b92505060206136da85828601613340565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061372857607f821691505b60208210810361373b5761373a6136e4565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137756020836131b4565b915061378082613741565b602082019050919050565b5f6020820190508181035f8301526137a281613769565b9050919050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f6137dd600c836131b4565b91506137e8826137a9565b602082019050919050565b5f6020820190508181035f83015261380a816137d1565b9050919050565b5f6040820190506138245f830185613532565b6138316020830184613182565b9392505050565b5f81519050919050565b5f81905092915050565b5f61385682613838565b6138608185613842565b93506138708185602086016131c4565b80840191505092915050565b5f613887828461384c565b915081905092915050565b7f546f6b656e207061796d656e74206661696c65640000000000000000000000005f82015250565b5f6138c66014836131b4565b91506138d182613892565b602082019050919050565b5f6020820190508181035f8301526138f3816138ba565b9050919050565b7f547261646520456e61626c6564210000000000000000000000000000000000005f82015250565b5f61392e600e836131b4565b9150613939826138fa565b602082019050919050565b5f6020820190508181035f83015261395b81613922565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b50565b5f61399d5f83613842565b91506139a88261398f565b5f82019050919050565b5f6139bc82613992565b9150819050919050565b7f5472616e73616374696f6e204661696c656421210000000000000000000000005f82015250565b5f6139fa6014836131b4565b9150613a05826139c6565b602082019050919050565b5f6020820190508181035f830152613a27816139ee565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613a886026836131b4565b9150613a9382613a2e565b604082019050919050565b5f6020820190508181035f830152613ab581613a7c565b9050919050565b7f45786365656473206d61785478416d6f756e74000000000000000000000000005f82015250565b5f613af06013836131b4565b9150613afb82613abc565b602082019050919050565b5f6020820190508181035f830152613b1d81613ae4565b9050919050565b7f457863656564732057616c6c65740000000000000000000000000000000000005f82015250565b5f613b58600e836131b4565b9150613b6382613b24565b602082019050919050565b5f6020820190508181035f830152613b8581613b4c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613bc382613179565b9150613bce83613179565b9250828203905081811115613be657613be5613b8c565b5b92915050565b5f613bf682613179565b9150613c0183613179565b9250828201905080821115613c1957613c18613b8c565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613c53601b836131b4565b9150613c5e82613c1f565b602082019050919050565b5f6020820190508181035f830152613c8081613c47565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050613cc281613300565b92915050565b5f60208284031215613cdd57613cdc6132e7565b5b5f613cea84828501613cb4565b91505092915050565b5f819050919050565b5f613d16613d11613d0c84613cf3565b613273565b613179565b9050919050565b613d2681613cfc565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613d5e816132ef565b82525050565b5f613d6f8383613d55565b60208301905092915050565b5f602082019050919050565b5f613d9182613d2c565b613d9b8185613d36565b9350613da683613d46565b805f5b83811015613dd6578151613dbd8882613d64565b9750613dc883613d7b565b925050600181019050613da9565b5085935050505092915050565b5f60a082019050613df65f830188613182565b613e036020830187613d1d565b8181036040830152613e158186613d87565b9050613e246060830185613532565b613e316080830184613182565b9695505050505050565b5f604082019050613e4e5f830185613182565b8181036020830152613e608184613d87565b90509392505050565b5f613e7382613179565b9150613e7e83613179565b9250828202613e8c81613179565b91508282048414831517613ea357613ea2613b8c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ee182613179565b9150613eec83613179565b925082613efc57613efb613eaa565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f616021836131b4565b9150613f6c82613f07565b604082019050919050565b5f6020820190508181035f830152613f8e81613f55565b905091905056fea26469706673582212202f9f2d84b3df25278a70bb634a428aec10e8e3e9b69390d852e4329b7505373364736f6c63430008160033

Deployed Bytecode Sourcemap

4673:11373:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5556:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7373:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5821:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8040:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5890:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7650:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14718:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8859:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7559:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5125:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4882:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5068:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14121:314;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15549:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15662:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5291:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5737:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15171:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5663:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7758:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2119:94;;;;;;;;;;;;;:::i;:::-;;15435:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14590:120;;;;;;;;;;;;;:::i;:::-;;5624:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5413:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5484:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13075:137;;;;;;;;;;;;;:::i;:::-;;5236:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1810:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7464;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14840:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5776:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8684:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15307:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15784:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5177:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4910:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7889:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15041:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13876:237;;;;;;;;;;;;;:::i;:::-;;5700:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5923:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5859:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2221:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14443:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5556:59;;;;:::o;7373:83::-;7410:13;7443:5;7436:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7373:83;:::o;5821:31::-;;;;;;;;;;;;;:::o;8040:161::-;8115:4;8132:39;8141:12;:10;:12::i;:::-;8155:7;8164:6;8132:8;:39::i;:::-;8189:4;8182:11;;8040:161;;;;:::o;5890:25::-;;;;;;;;;;;;;:::o;7650:100::-;7703:7;7730:12;;7723:19;;7650:100;:::o;14718:114::-;2042:12;:10;:12::i;:::-;2031:23;;:7;:5;:7::i;:::-;:23;;;2023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14817:7:::1;14790:24;;:34;;;;;;;;;;;;;;;;;;14718:114:::0;:::o;8859:297::-;8957:4;8974:36;8984:6;8992:9;9003:6;8974:9;:36::i;:::-;;9021:105;9030:6;9038:12;:10;:12::i;:::-;9052:73;9090:6;9052:73;;;;;;;;;;;;;;;;;:11;:19;9064:6;9052:19;;;;;;;;;;;;;;;:33;9072:12;:10;:12::i;:::-;9052:33;;;;;;;;;;;;;;;;:37;;:73;;;;;:::i;:::-;9021:8;:105::i;:::-;9144:4;9137:11;;8859:297;;;;;:::o;7559:83::-;7600:5;7625:9;;;;;;;;;;;7618:16;;7559:83;:::o;5125:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;4882:21::-;;;;:::o;5068:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;14121:314::-;14214:15;;;;;;;;;;;14200:29;;:10;:29;;;14192:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;14257:12;14283:6;14275:20;;14350:15;;;;;;;;;;;14367:7;14296:79;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14275:101;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14256:120;;;14395:7;14387:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;14181:254;14121:314;;:::o;15549:101::-;2042:12;:10;:12::i;:::-;2031:23;;:7;:5;:7::i;:::-;:23;;;2023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15634:8:::1;15619:12;:23;;;;15549:101:::0;:::o;15662:114::-;2042:12;:10;:12::i;:::-;2031:23;;:7;:5;:7::i;:::-;:23;;;2023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15758:10:::1;15740:15;;:28;;;;;;;;;;;;;;;;;;15662:114:::0;:::o;5291:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;5737:32::-;;;;;;;;;;;;;:::o;15171:128::-;2042:12;:10;:12::i;:::-;2031:23;;:7;:5;:7::i;:::-;:23;;;2023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15284:7:::1;15256:19;:25;15276:4;15256:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15171:128:::0;;:::o;5663:30::-;;;;;;;;;;;;;:::o;7758:123::-;7824:7;7850:9;:18;7860:7;7850:18;;;;;;;;;;;;;;;;7843:25;;7758:123;;;:::o;2119:94::-;2042:12;:10;:12::i;:::-;2031:23;;:7;:5;:7::i;:::-;:23;;;2023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2184:21:::1;2202:1;2184:9;:21::i;:::-;2119:94::o:0;15435:106::-;2042:12;:10;:12::i;:::-;2031:23;;:7;:5;:7::i;:::-;:23;;;2023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15525:8:::1;15512:10;:21;;;;15435:106:::0;:::o;14590:120::-;2042:12;:10;:12::i;:::-;2031:23;;:7;:5;:7::i;:::-;:23;;;2023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14660:5:::1;14644:13;;:21;;;;;;;;;;;;;;;;;;14697:5;14676:17;;:26;;;;;;;;;;;;;;;;;;14590:120::o:0;5624:30::-;;;;;;;;;;;;;:::o;5413:59::-;;;;:::o;5484:55::-;;;;:::o;13075:137::-;2042:12;:10;:12::i;:::-;2031:23;;:7;:5;:7::i;:::-;:23;;;2023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13139:13:::1;;;;;;;;;;;13138:14;13130:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;13200:4;13184:13;;:20;;;;;;;;;;;;;;;;;;13075:137::o:0;5236:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;1810:87::-;1856:7;1883:6;;;;;;;;;;;1876:13;;1810:87;:::o;7464:::-;7503:13;7536:7;7529:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7464:87;:::o;14840:193::-;2042:12;:10;:12::i;:::-;2031:23;;:7;:5;:7::i;:::-;:23;;;2023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14936:6:::1;14932:94;14952:4;;:11;;14948:1;:15;14932:94;;;15007:7;14984:11;:20;14996:4;;15001:1;14996:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14984:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;14965:3;;;;;;;14932:94;;;;14840:193:::0;;;:::o;5776:36::-;;;;;;;;;;;;;:::o;8684:167::-;8762:4;8779:42;8789:12;:10;:12::i;:::-;8803:9;8814:6;8779:9;:42::i;:::-;;8839:4;8832:11;;8684:167;;;;:::o;15307:120::-;2042:12;:10;:12::i;:::-;2031:23;;:7;:5;:7::i;:::-;:23;;;2023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15412:7:::1;15388:15;:21;15404:4;15388:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;15307:120:::0;;:::o;15784:229::-;2042:12;:10;:12::i;:::-;2031:23;;:7;:5;:7::i;:::-;:23;;;2023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15927:8:::1;15913:11;;:22;;;;;;;;;;;;;;;;;;15960:8;15946:11;;:22;;;;;;;;;;;;;;;;;;15995:10;15979:13;:26;;;;15784:229:::0;;;:::o;5177:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;4910:22::-;;;;:::o;7889:143::-;7970:7;7997:11;:18;8009:5;7997:18;;;;;;;;;;;;;;;:27;8016:7;7997:27;;;;;;;;;;;;;;;;7990:34;;7889:143;;;;:::o;15041:122::-;2042:12;:10;:12::i;:::-;2031:23;;:7;:5;:7::i;:::-;:23;;;2023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15148:7:::1;15122:17;:23;15140:4;15122:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;15041:122:::0;;:::o;13876:237::-;13942:15;;;;;;;;;;;13928:29;;:10;:29;;;13920:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13985:7;14005:15;;;;;;;;;;;13997:29;;14034:21;13997:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13984:76;;;14079:2;14071:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;13908:205;13876:237::o;5700:30::-;;;;;;;;;;;;;:::o;5923:36::-;;;;;;;;;;;;;:::o;5859:22::-;;;;;;;;;;;;;:::o;2221:229::-;2042:12;:10;:12::i;:::-;2031:23;;:7;:5;:7::i;:::-;:23;;;2023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2344:1:::1;2324:22;;:8;:22;;::::0;2302:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2423:19;2433:8;2423:9;:19::i;:::-;2221:229:::0;:::o;14443:139::-;2042:12;:10;:12::i;:::-;2031:23;;:7;:5;:7::i;:::-;:23;;;2023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14536:8:::1;14527:6;:17;;;;14565:9;14555:7;:19;;;;14443:139:::0;;:::o;486:98::-;539:7;566:10;559:17;;486:98;:::o;8209:382::-;8315:1;8298:19;;:5;:19;;;8294:91;;8370:1;8341:32;;;;;;;;;;;:::i;:::-;;;;;;;;8294:91;8418:1;8399:21;;:7;:21;;;8395:92;;8472:1;8444:31;;;;;;;;;;;:::i;:::-;;;;;;;;8395:92;8529:6;8499:11;:18;8511:5;8499:18;;;;;;;;;;;;;;;:27;8518:7;8499:27;;;;;;;;;;;;;;;:36;;;;8567:7;8551:32;;8560:5;8551:32;;;8576:6;8551:32;;;;;;:::i;:::-;;;;;;;;8209:382;;;:::o;9164:1971::-;9251:4;9292:1;9274:20;;:6;:20;;;9270:90;;9345:1;9318:30;;;;;;;;;;;:::i;:::-;;;;;;;;9270:90;9395:1;9374:23;;:9;:23;;;9370:95;;9450:1;9421:32;;;;;;;;;;;:::i;:::-;;;;;;;;9370:95;9488:1;9478:6;:11;9475:69;;9513:19;;;;;;;;;;;;;;9475:69;9564:6;;;;;;;;;;;9560:1566;;;9594:41;9609:6;9617:9;9628:6;9594:14;:41::i;:::-;9587:48;;;;9560:1566;9684:11;:19;9696:6;9684:19;;;;;;;;;;;;;;;;;;;;;;;;;9683:20;:47;;;;;9708:11;:22;9720:9;9708:22;;;;;;;;;;;;;;;;;;;;;;;;;9707:23;9683:47;9679:177;;;9755:13;;;;;;;;;;;9751:90;;9800:21;;;;;;;;;;;;;;9751:90;9679:177;9872:28;9903:24;9921:4;9903:9;:24::i;:::-;9872:55;;9942:28;9997:13;;9973:20;:37;;9942:68;;10049:23;:52;;;;;10095:6;;;;;;;;;;;10094:7;10049:52;:95;;;;;10124:12;:20;10137:6;10124:20;;;;;;;;;;;;;;;;;;;;;;;;;10123:21;10049:95;:128;;;;;10166:11;;;;;;;;;;;10049:128;:175;;;;;10199:17;:25;10217:6;10199:25;;;;;;;;;;;;;;;;;;;;;;;;;10198:26;10049:175;:225;;;;;10246:17;:28;10264:9;10246:28;;;;;;;;;;;;;;;;;;;;;;;;;10245:29;10049:225;10027:332;;;10313:30;10322:20;10313:8;:30::i;:::-;10027:332;10379:15;:23;10395:6;10379:23;;;;;;;;;;;;;;;;;;;;;;;;;10378:24;:55;;;;;10407:15;:26;10423:9;10407:26;;;;;;;;;;;;;;;;;;;;;;;;;10406:27;10378:55;:72;;;;;10437:13;;;;;;;;;;;10378:72;10375:166;;;10489:12;;10479:6;:22;;10471:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;10375:166;10590:53;10612:6;10590:53;;;;;;;;;;;;;;;;;:9;:17;10600:6;10590:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10570:9;:17;10580:6;10570:17;;;;;;;;;;;;;;;:73;;;;10660:19;10682:34;10699:6;10706:9;10682:16;:34::i;:::-;:80;;10728:34;10736:6;10744:9;10755:6;10728:7;:34::i;:::-;10682:80;;;10719:6;10682:80;10660:102;;10782:17;;;;;;;;;;;:52;;;;;10804:19;:30;10824:9;10804:30;;;;;;;;;;;;;;;;;;;;;;;;;10803:31;10782:52;10779:169;;;10904:10;;10863:37;10888:11;10863:20;10873:9;10863;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;10855:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;10779:169;10987:37;11012:11;10987:9;:20;10997:9;10987:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;10964:9;:20;10974:9;10964:20;;;;;;;;;;;;;;;:60;;;;11063:9;11046:40;;11055:6;11046:40;;;11074:11;11046:40;;;;;;:::i;:::-;;;;;;;;11108:4;11101:11;;;;;9164:1971;;;;;;:::o;2997:192::-;3083:7;3116:1;3111;:6;;3119:12;3103:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3143:9;3159:1;3155;:5;;;;:::i;:::-;3143:17;;3180:1;3173:8;;;2997:192;;;;;:::o;2458:173::-;2514:16;2533:6;;;;;;;;;;;2514:25;;2559:8;2550:6;;:17;;;;;;;;;;;;;;;;;;2614:8;2583:40;;2604:8;2583:40;;;;;;;;;;;;2503:128;2458:173;:::o;11143:330::-;11236:4;11273:53;11295:6;11273:53;;;;;;;;;;;;;;;;;:9;:17;11283:6;11273:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11253:9;:17;11263:6;11253:17;;;;;;;;;;;;;;;:73;;;;11360:32;11385:6;11360:9;:20;11370:9;11360:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11337:9;:20;11347:9;11337:20;;;;;;;;;;;;;;;:55;;;;11425:9;11408:35;;11417:6;11408:35;;;11436:6;11408:35;;;;;;:::i;:::-;;;;;;;;11461:4;11454:11;;11143:330;;;;;:::o;12661:406::-;6028:4;6019:6;;:13;;;;;;;;;;;;;;;;;;12735:11:::1;;;;;;;;;;;12732:47;;;12766:13;;12748:31;;12732:47;12792:22;12817:21;12792:46;;12849:33;12866:15;12849:16;:33::i;:::-;12893:22;12918:41;12944:14;12918:21;:25;;:41;;;;:::i;:::-;12893:66;;12992:1;12975:14;:18;12972:85;;;13016:15;;;;;;;;;;;13008:33;;:49;13042:14;13008:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12972:85;12719:348;;6064:5:::0;6055:6;;:14;;;;;;;;;;;;;;;;;;12661:406;:::o;11485:369::-;11569:4;11589:17;:25;11607:6;11589:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;11618:17;:28;11636:9;11618:28;;;;;;;;;;;;;;;;;;;;;;;;;11589:57;11586:261;;;11670:4;11663:11;;;;11586:261;11705:12;:20;11718:6;11705:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;11729:12;:23;11742:9;11729:23;;;;;;;;;;;;;;;;;;;;;;;;;11705:47;11701:146;;;11776:5;11769:12;;;;11701:146;11830:5;11823:12;;11485:369;;;;;:::o;11864:787::-;11950:7;11980:14;12037:12;:20;12050:6;12037:20;;;;;;;;;;;;;;;;;;;;;;;;;12034:343;;;12091:27;12114:3;12091:18;12102:6;;12091;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;12079:39;;12034:343;;;12157:12;:23;12170:9;12157:23;;;;;;;;;;;;;;;;;;;;;;;;;12154:223;;;12214:28;12238:3;12214:19;12225:7;;12214:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;12202:40;;12154:223;;;12281:24;;;;;;;;;;;12277:100;;;12338:23;12357:3;12338:14;12349:2;12338:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;12326:35;;12277:100;12154:223;12034:343;12408:1;12396:9;:13;12393:185;;;12457:39;12486:9;12457;:24;12475:4;12457:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;12430:9;:24;12448:4;12430:24;;;;;;;;;;;;;;;:66;;;;12545:4;12520:42;;12529:6;12520:42;;;12552:9;12520:42;;;;;;:::i;:::-;;;;;;;;12393:185;12601:21;12612:9;12601:6;:10;;:21;;;;:::i;:::-;12594:28;;;11864:787;;;;;:::o;2664:181::-;2722:7;2742:9;2758:1;2754;:5;;;;:::i;:::-;2742:17;;2783:1;2778;:6;;2770:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2836:1;2829:8;;;2664:181;;;;:::o;13220:648::-;13346:21;13384:1;13370:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13346:40;;13415:4;13397;13402:1;13397:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13441:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13431:4;13436:1;13431:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;13470:56;13487:4;13502:9;;;;;;;;;;;13514:11;13470:8;:56::i;:::-;13565:9;;;;;;;;;;;:60;;;13640:11;13666:1;13710:4;13737;13773:15;13565:234;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13825:35;13842:11;13855:4;13825:35;;;;;;;:::i;:::-;;;;;;;;13275:593;13220:648;:::o;2853:136::-;2911:7;2938:43;2942:1;2945;2938:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2931:50;;2853:136;;;;:::o;3197:250::-;3255:7;3284:1;3279;:6;3275:47;;3309:1;3302:8;;;;3275:47;3334:9;3350:1;3346;:5;;;;:::i;:::-;3334:17;;3379:1;3374;3370;:5;;;;:::i;:::-;:10;3362:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3438:1;3431:8;;;3197:250;;;;;:::o;3455:132::-;3513:7;3540:39;3544:1;3547;3540:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3533:46;;3455:132;;;;:::o;3595:278::-;3681:7;3713:1;3709;:5;3716:12;3701:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3740:9;3756:1;3752;:5;;;;:::i;:::-;3740:17;;3864:1;3857:8;;;3595:278;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:126::-;1821:7;1861:42;1854:5;1850:54;1839:65;;1784:126;;;:::o;1916:60::-;1944:3;1965:5;1958:12;;1916:60;;;:::o;1982:142::-;2032:9;2065:53;2083:34;2092:24;2110:5;2092:24;:::i;:::-;2083:34;:::i;:::-;2065:53;:::i;:::-;2052:66;;1982:142;;;:::o;2130:126::-;2180:9;2213:37;2244:5;2213:37;:::i;:::-;2200:50;;2130:126;;;:::o;2262:148::-;2334:9;2367:37;2398:5;2367:37;:::i;:::-;2354:50;;2262:148;;;:::o;2416:175::-;2525:59;2578:5;2525:59;:::i;:::-;2520:3;2513:72;2416:175;;:::o;2597:266::-;2712:4;2750:2;2739:9;2735:18;2727:26;;2763:93;2853:1;2842:9;2838:17;2829:6;2763:93;:::i;:::-;2597:266;;;;:::o;2950:117::-;3059:1;3056;3049:12;3073:117;3182:1;3179;3172:12;3196:96;3233:7;3262:24;3280:5;3262:24;:::i;:::-;3251:35;;3196:96;;;:::o;3298:122::-;3371:24;3389:5;3371:24;:::i;:::-;3364:5;3361:35;3351:63;;3410:1;3407;3400:12;3351:63;3298:122;:::o;3426:139::-;3472:5;3510:6;3497:20;3488:29;;3526:33;3553:5;3526:33;:::i;:::-;3426:139;;;;:::o;3571:122::-;3644:24;3662:5;3644:24;:::i;:::-;3637:5;3634:35;3624:63;;3683:1;3680;3673:12;3624:63;3571:122;:::o;3699:139::-;3745:5;3783:6;3770:20;3761:29;;3799:33;3826:5;3799:33;:::i;:::-;3699:139;;;;:::o;3844:474::-;3912:6;3920;3969:2;3957:9;3948:7;3944:23;3940:32;3937:119;;;3975:79;;:::i;:::-;3937:119;4095:1;4120:53;4165:7;4156:6;4145:9;4141:22;4120:53;:::i;:::-;4110:63;;4066:117;4222:2;4248:53;4293:7;4284:6;4273:9;4269:22;4248:53;:::i;:::-;4238:63;;4193:118;3844:474;;;;;:::o;4324:90::-;4358:7;4401:5;4394:13;4387:21;4376:32;;4324:90;;;:::o;4420:109::-;4501:21;4516:5;4501:21;:::i;:::-;4496:3;4489:34;4420:109;;:::o;4535:210::-;4622:4;4660:2;4649:9;4645:18;4637:26;;4673:65;4735:1;4724:9;4720:17;4711:6;4673:65;:::i;:::-;4535:210;;;;:::o;4751:116::-;4821:21;4836:5;4821:21;:::i;:::-;4814:5;4811:32;4801:60;;4857:1;4854;4847:12;4801:60;4751:116;:::o;4873:133::-;4916:5;4954:6;4941:20;4932:29;;4970:30;4994:5;4970:30;:::i;:::-;4873:133;;;;:::o;5012:323::-;5068:6;5117:2;5105:9;5096:7;5092:23;5088:32;5085:119;;;5123:79;;:::i;:::-;5085:119;5243:1;5268:50;5310:7;5301:6;5290:9;5286:22;5268:50;:::i;:::-;5258:60;;5214:114;5012:323;;;;:::o;5341:619::-;5418:6;5426;5434;5483:2;5471:9;5462:7;5458:23;5454:32;5451:119;;;5489:79;;:::i;:::-;5451:119;5609:1;5634:53;5679:7;5670:6;5659:9;5655:22;5634:53;:::i;:::-;5624:63;;5580:117;5736:2;5762:53;5807:7;5798:6;5787:9;5783:22;5762:53;:::i;:::-;5752:63;;5707:118;5864:2;5890:53;5935:7;5926:6;5915:9;5911:22;5890:53;:::i;:::-;5880:63;;5835:118;5341:619;;;;;:::o;5966:86::-;6001:7;6041:4;6034:5;6030:16;6019:27;;5966:86;;;:::o;6058:112::-;6141:22;6157:5;6141:22;:::i;:::-;6136:3;6129:35;6058:112;;:::o;6176:214::-;6265:4;6303:2;6292:9;6288:18;6280:26;;6316:67;6380:1;6369:9;6365:17;6356:6;6316:67;:::i;:::-;6176:214;;;;:::o;6396:329::-;6455:6;6504:2;6492:9;6483:7;6479:23;6475:32;6472:119;;;6510:79;;:::i;:::-;6472:119;6630:1;6655:53;6700:7;6691:6;6680:9;6676:22;6655:53;:::i;:::-;6645:63;;6601:117;6396:329;;;;:::o;6731:::-;6790:6;6839:2;6827:9;6818:7;6814:23;6810:32;6807:119;;;6845:79;;:::i;:::-;6807:119;6965:1;6990:53;7035:7;7026:6;7015:9;7011:22;6990:53;:::i;:::-;6980:63;;6936:117;6731:329;;;;:::o;7066:468::-;7131:6;7139;7188:2;7176:9;7167:7;7163:23;7159:32;7156:119;;;7194:79;;:::i;:::-;7156:119;7314:1;7339:53;7384:7;7375:6;7364:9;7360:22;7339:53;:::i;:::-;7329:63;;7285:117;7441:2;7467:50;7509:7;7500:6;7489:9;7485:22;7467:50;:::i;:::-;7457:60;;7412:115;7066:468;;;;;:::o;7540:118::-;7627:24;7645:5;7627:24;:::i;:::-;7622:3;7615:37;7540:118;;:::o;7664:222::-;7757:4;7795:2;7784:9;7780:18;7772:26;;7808:71;7876:1;7865:9;7861:17;7852:6;7808:71;:::i;:::-;7664:222;;;;:::o;7892:117::-;8001:1;7998;7991:12;8015:117;8124:1;8121;8114:12;8138:117;8247:1;8244;8237:12;8278:568;8351:8;8361:6;8411:3;8404:4;8396:6;8392:17;8388:27;8378:122;;8419:79;;:::i;:::-;8378:122;8532:6;8519:20;8509:30;;8562:18;8554:6;8551:30;8548:117;;;8584:79;;:::i;:::-;8548:117;8698:4;8690:6;8686:17;8674:29;;8752:3;8744:4;8736:6;8732:17;8722:8;8718:32;8715:41;8712:128;;;8759:79;;:::i;:::-;8712:128;8278:568;;;;;:::o;8852:698::-;8944:6;8952;8960;9009:2;8997:9;8988:7;8984:23;8980:32;8977:119;;;9015:79;;:::i;:::-;8977:119;9163:1;9152:9;9148:17;9135:31;9193:18;9185:6;9182:30;9179:117;;;9215:79;;:::i;:::-;9179:117;9328:80;9400:7;9391:6;9380:9;9376:22;9328:80;:::i;:::-;9310:98;;;;9106:312;9457:2;9483:50;9525:7;9516:6;9505:9;9501:22;9483:50;:::i;:::-;9473:60;;9428:115;8852:698;;;;;:::o;9556:607::-;9627:6;9635;9643;9692:2;9680:9;9671:7;9667:23;9663:32;9660:119;;;9698:79;;:::i;:::-;9660:119;9818:1;9843:53;9888:7;9879:6;9868:9;9864:22;9843:53;:::i;:::-;9833:63;;9789:117;9945:2;9971:50;10013:7;10004:6;9993:9;9989:22;9971:50;:::i;:::-;9961:60;;9916:115;10070:2;10096:50;10138:7;10129:6;10118:9;10114:22;10096:50;:::i;:::-;10086:60;;10041:115;9556:607;;;;;:::o;10169:474::-;10237:6;10245;10294:2;10282:9;10273:7;10269:23;10265:32;10262:119;;;10300:79;;:::i;:::-;10262:119;10420:1;10445:53;10490:7;10481:6;10470:9;10466:22;10445:53;:::i;:::-;10435:63;;10391:117;10547:2;10573:53;10618:7;10609:6;10598:9;10594:22;10573:53;:::i;:::-;10563:63;;10518:118;10169:474;;;;;:::o;10649:::-;10717:6;10725;10774:2;10762:9;10753:7;10749:23;10745:32;10742:119;;;10780:79;;:::i;:::-;10742:119;10900:1;10925:53;10970:7;10961:6;10950:9;10946:22;10925:53;:::i;:::-;10915:63;;10871:117;11027:2;11053:53;11098:7;11089:6;11078:9;11074:22;11053:53;:::i;:::-;11043:63;;10998:118;10649:474;;;;;:::o;11129:180::-;11177:77;11174:1;11167:88;11274:4;11271:1;11264:15;11298:4;11295:1;11288:15;11315:320;11359:6;11396:1;11390:4;11386:12;11376:22;;11443:1;11437:4;11433:12;11464:18;11454:81;;11520:4;11512:6;11508:17;11498:27;;11454:81;11582:2;11574:6;11571:14;11551:18;11548:38;11545:84;;11601:18;;:::i;:::-;11545:84;11366:269;11315:320;;;:::o;11641:182::-;11781:34;11777:1;11769:6;11765:14;11758:58;11641:182;:::o;11829:366::-;11971:3;11992:67;12056:2;12051:3;11992:67;:::i;:::-;11985:74;;12068:93;12157:3;12068:93;:::i;:::-;12186:2;12181:3;12177:12;12170:19;;11829:366;;;:::o;12201:419::-;12367:4;12405:2;12394:9;12390:18;12382:26;;12454:9;12448:4;12444:20;12440:1;12429:9;12425:17;12418:47;12482:131;12608:4;12482:131;:::i;:::-;12474:139;;12201:419;;;:::o;12626:162::-;12766:14;12762:1;12754:6;12750:14;12743:38;12626:162;:::o;12794:366::-;12936:3;12957:67;13021:2;13016:3;12957:67;:::i;:::-;12950:74;;13033:93;13122:3;13033:93;:::i;:::-;13151:2;13146:3;13142:12;13135:19;;12794:366;;;:::o;13166:419::-;13332:4;13370:2;13359:9;13355:18;13347:26;;13419:9;13413:4;13409:20;13405:1;13394:9;13390:17;13383:47;13447:131;13573:4;13447:131;:::i;:::-;13439:139;;13166:419;;;:::o;13591:332::-;13712:4;13750:2;13739:9;13735:18;13727:26;;13763:71;13831:1;13820:9;13816:17;13807:6;13763:71;:::i;:::-;13844:72;13912:2;13901:9;13897:18;13888:6;13844:72;:::i;:::-;13591:332;;;;;:::o;13929:98::-;13980:6;14014:5;14008:12;13998:22;;13929:98;;;:::o;14033:147::-;14134:11;14171:3;14156:18;;14033:147;;;;:::o;14186:386::-;14290:3;14318:38;14350:5;14318:38;:::i;:::-;14372:88;14453:6;14448:3;14372:88;:::i;:::-;14365:95;;14469:65;14527:6;14522:3;14515:4;14508:5;14504:16;14469:65;:::i;:::-;14559:6;14554:3;14550:16;14543:23;;14294:278;14186:386;;;;:::o;14578:271::-;14708:3;14730:93;14819:3;14810:6;14730:93;:::i;:::-;14723:100;;14840:3;14833:10;;14578:271;;;;:::o;14855:170::-;14995:22;14991:1;14983:6;14979:14;14972:46;14855:170;:::o;15031:366::-;15173:3;15194:67;15258:2;15253:3;15194:67;:::i;:::-;15187:74;;15270:93;15359:3;15270:93;:::i;:::-;15388:2;15383:3;15379:12;15372:19;;15031:366;;;:::o;15403:419::-;15569:4;15607:2;15596:9;15592:18;15584:26;;15656:9;15650:4;15646:20;15642:1;15631:9;15627:17;15620:47;15684:131;15810:4;15684:131;:::i;:::-;15676:139;;15403:419;;;:::o;15828:164::-;15968:16;15964:1;15956:6;15952:14;15945:40;15828:164;:::o;15998:366::-;16140:3;16161:67;16225:2;16220:3;16161:67;:::i;:::-;16154:74;;16237:93;16326:3;16237:93;:::i;:::-;16355:2;16350:3;16346:12;16339:19;;15998:366;;;:::o;16370:419::-;16536:4;16574:2;16563:9;16559:18;16551:26;;16623:9;16617:4;16613:20;16609:1;16598:9;16594:17;16587:47;16651:131;16777:4;16651:131;:::i;:::-;16643:139;;16370:419;;;:::o;16795:180::-;16843:77;16840:1;16833:88;16940:4;16937:1;16930:15;16964:4;16961:1;16954:15;16981:114;;:::o;17101:398::-;17260:3;17281:83;17362:1;17357:3;17281:83;:::i;:::-;17274:90;;17373:93;17462:3;17373:93;:::i;:::-;17491:1;17486:3;17482:11;17475:18;;17101:398;;;:::o;17505:379::-;17689:3;17711:147;17854:3;17711:147;:::i;:::-;17704:154;;17875:3;17868:10;;17505:379;;;:::o;17890:170::-;18030:22;18026:1;18018:6;18014:14;18007:46;17890:170;:::o;18066:366::-;18208:3;18229:67;18293:2;18288:3;18229:67;:::i;:::-;18222:74;;18305:93;18394:3;18305:93;:::i;:::-;18423:2;18418:3;18414:12;18407:19;;18066:366;;;:::o;18438:419::-;18604:4;18642:2;18631:9;18627:18;18619:26;;18691:9;18685:4;18681:20;18677:1;18666:9;18662:17;18655:47;18719:131;18845:4;18719:131;:::i;:::-;18711:139;;18438:419;;;:::o;18863:225::-;19003:34;18999:1;18991:6;18987:14;18980:58;19072:8;19067:2;19059:6;19055:15;19048:33;18863:225;:::o;19094:366::-;19236:3;19257:67;19321:2;19316:3;19257:67;:::i;:::-;19250:74;;19333:93;19422:3;19333:93;:::i;:::-;19451:2;19446:3;19442:12;19435:19;;19094:366;;;:::o;19466:419::-;19632:4;19670:2;19659:9;19655:18;19647:26;;19719:9;19713:4;19709:20;19705:1;19694:9;19690:17;19683:47;19747:131;19873:4;19747:131;:::i;:::-;19739:139;;19466:419;;;:::o;19891:169::-;20031:21;20027:1;20019:6;20015:14;20008:45;19891:169;:::o;20066:366::-;20208:3;20229:67;20293:2;20288:3;20229:67;:::i;:::-;20222:74;;20305:93;20394:3;20305:93;:::i;:::-;20423:2;20418:3;20414:12;20407:19;;20066:366;;;:::o;20438:419::-;20604:4;20642:2;20631:9;20627:18;20619:26;;20691:9;20685:4;20681:20;20677:1;20666:9;20662:17;20655:47;20719:131;20845:4;20719:131;:::i;:::-;20711:139;;20438:419;;;:::o;20863:164::-;21003:16;20999:1;20991:6;20987:14;20980:40;20863:164;:::o;21033:366::-;21175:3;21196:67;21260:2;21255:3;21196:67;:::i;:::-;21189:74;;21272:93;21361:3;21272:93;:::i;:::-;21390:2;21385:3;21381:12;21374:19;;21033:366;;;:::o;21405:419::-;21571:4;21609:2;21598:9;21594:18;21586:26;;21658:9;21652:4;21648:20;21644:1;21633:9;21629:17;21622:47;21686:131;21812:4;21686:131;:::i;:::-;21678:139;;21405:419;;;:::o;21830:180::-;21878:77;21875:1;21868:88;21975:4;21972:1;21965:15;21999:4;21996:1;21989:15;22016:194;22056:4;22076:20;22094:1;22076:20;:::i;:::-;22071:25;;22110:20;22128:1;22110:20;:::i;:::-;22105:25;;22154:1;22151;22147:9;22139:17;;22178:1;22172:4;22169:11;22166:37;;;22183:18;;:::i;:::-;22166:37;22016:194;;;;:::o;22216:191::-;22256:3;22275:20;22293:1;22275:20;:::i;:::-;22270:25;;22309:20;22327:1;22309:20;:::i;:::-;22304:25;;22352:1;22349;22345:9;22338:16;;22373:3;22370:1;22367:10;22364:36;;;22380:18;;:::i;:::-;22364:36;22216:191;;;;:::o;22413:177::-;22553:29;22549:1;22541:6;22537:14;22530:53;22413:177;:::o;22596:366::-;22738:3;22759:67;22823:2;22818:3;22759:67;:::i;:::-;22752:74;;22835:93;22924:3;22835:93;:::i;:::-;22953:2;22948:3;22944:12;22937:19;;22596:366;;;:::o;22968:419::-;23134:4;23172:2;23161:9;23157:18;23149:26;;23221:9;23215:4;23211:20;23207:1;23196:9;23192:17;23185:47;23249:131;23375:4;23249:131;:::i;:::-;23241:139;;22968:419;;;:::o;23393:180::-;23441:77;23438:1;23431:88;23538:4;23535:1;23528:15;23562:4;23559:1;23552:15;23579:143;23636:5;23667:6;23661:13;23652:22;;23683:33;23710:5;23683:33;:::i;:::-;23579:143;;;;:::o;23728:351::-;23798:6;23847:2;23835:9;23826:7;23822:23;23818:32;23815:119;;;23853:79;;:::i;:::-;23815:119;23973:1;23998:64;24054:7;24045:6;24034:9;24030:22;23998:64;:::i;:::-;23988:74;;23944:128;23728:351;;;;:::o;24085:85::-;24130:7;24159:5;24148:16;;24085:85;;;:::o;24176:158::-;24234:9;24267:61;24285:42;24294:32;24320:5;24294:32;:::i;:::-;24285:42;:::i;:::-;24267:61;:::i;:::-;24254:74;;24176:158;;;:::o;24340:147::-;24435:45;24474:5;24435:45;:::i;:::-;24430:3;24423:58;24340:147;;:::o;24493:114::-;24560:6;24594:5;24588:12;24578:22;;24493:114;;;:::o;24613:184::-;24712:11;24746:6;24741:3;24734:19;24786:4;24781:3;24777:14;24762:29;;24613:184;;;;:::o;24803:132::-;24870:4;24893:3;24885:11;;24923:4;24918:3;24914:14;24906:22;;24803:132;;;:::o;24941:108::-;25018:24;25036:5;25018:24;:::i;:::-;25013:3;25006:37;24941:108;;:::o;25055:179::-;25124:10;25145:46;25187:3;25179:6;25145:46;:::i;:::-;25223:4;25218:3;25214:14;25200:28;;25055:179;;;;:::o;25240:113::-;25310:4;25342;25337:3;25333:14;25325:22;;25240:113;;;:::o;25389:732::-;25508:3;25537:54;25585:5;25537:54;:::i;:::-;25607:86;25686:6;25681:3;25607:86;:::i;:::-;25600:93;;25717:56;25767:5;25717:56;:::i;:::-;25796:7;25827:1;25812:284;25837:6;25834:1;25831:13;25812:284;;;25913:6;25907:13;25940:63;25999:3;25984:13;25940:63;:::i;:::-;25933:70;;26026:60;26079:6;26026:60;:::i;:::-;26016:70;;25872:224;25859:1;25856;25852:9;25847:14;;25812:284;;;25816:14;26112:3;26105:10;;25513:608;;;25389:732;;;;:::o;26127:831::-;26390:4;26428:3;26417:9;26413:19;26405:27;;26442:71;26510:1;26499:9;26495:17;26486:6;26442:71;:::i;:::-;26523:80;26599:2;26588:9;26584:18;26575:6;26523:80;:::i;:::-;26650:9;26644:4;26640:20;26635:2;26624:9;26620:18;26613:48;26678:108;26781:4;26772:6;26678:108;:::i;:::-;26670:116;;26796:72;26864:2;26853:9;26849:18;26840:6;26796:72;:::i;:::-;26878:73;26946:3;26935:9;26931:19;26922:6;26878:73;:::i;:::-;26127:831;;;;;;;;:::o;26964:483::-;27135:4;27173:2;27162:9;27158:18;27150:26;;27186:71;27254:1;27243:9;27239:17;27230:6;27186:71;:::i;:::-;27304:9;27298:4;27294:20;27289:2;27278:9;27274:18;27267:48;27332:108;27435:4;27426:6;27332:108;:::i;:::-;27324:116;;26964:483;;;;;:::o;27453:410::-;27493:7;27516:20;27534:1;27516:20;:::i;:::-;27511:25;;27550:20;27568:1;27550:20;:::i;:::-;27545:25;;27605:1;27602;27598:9;27627:30;27645:11;27627:30;:::i;:::-;27616:41;;27806:1;27797:7;27793:15;27790:1;27787:22;27767:1;27760:9;27740:83;27717:139;;27836:18;;:::i;:::-;27717:139;27501:362;27453:410;;;;:::o;27869:180::-;27917:77;27914:1;27907:88;28014:4;28011:1;28004:15;28038:4;28035:1;28028:15;28055:185;28095:1;28112:20;28130:1;28112:20;:::i;:::-;28107:25;;28146:20;28164:1;28146:20;:::i;:::-;28141:25;;28185:1;28175:35;;28190:18;;:::i;:::-;28175:35;28232:1;28229;28225:9;28220:14;;28055:185;;;;:::o;28246:220::-;28386:34;28382:1;28374:6;28370:14;28363:58;28455:3;28450:2;28442:6;28438:15;28431:28;28246:220;:::o;28472:366::-;28614:3;28635:67;28699:2;28694:3;28635:67;:::i;:::-;28628:74;;28711:93;28800:3;28711:93;:::i;:::-;28829:2;28824:3;28820:12;28813:19;;28472:366;;;:::o;28844:419::-;29010:4;29048:2;29037:9;29033:18;29025:26;;29097:9;29091:4;29087:20;29083:1;29072:9;29068:17;29061:47;29125:131;29251:4;29125:131;:::i;:::-;29117:139;;28844:419;;;:::o

Swarm Source

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