ETH Price: $3,351.74 (-3.07%)

Token

Pinocchio (PINOCCHIO)
 

Overview

Max Total Supply

100,000,000,000 PINOCCHIO

Holders

14

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
hulkstarmoon.eth
Balance
935,230,881.7995402213559183 PINOCCHIO

Value
$0.00
0xd0596791e0e987aba3cccb76dce5d260b490e0a0
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:
Pinocchio

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-21
*/

/**

// SPDX-License-Identifier: MIT

/** 



⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⢀⣀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⣠⠶⠚⠉⠉⠉⠉⠉⠉⠙⠛⠿⣍⣉⠛⢶⣤⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢀⡴⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠳⢦⣍⠻⣌⠉⠛⠲⢤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⣠⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣬⡑⢤⡀⠀⠀⠙⠳⢶⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢰⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⢦⡙⠀⠀⠀⠀⠀⠙⠺⡙⢶⣶⠤⣄⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢸⡿⠶⠤⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⠀⠀⠀⠀⠀⠀⠙⢦⡈⢳⡄⠀⠉⠉⠓⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠈⢳⢦⣀⡀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣀⣀⠀⠈⠻⣄⠀⠀⠀⠀⠀⠈⢳⡀⠙⣆⠀⠀⠀⠀⢳⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢠⡟⠰⠋⠉⠙⠓⠒⠒⠒⠛⠉⠉⠉⢉⣀⣀⣀⠀⠈⠉⠉⠲⢤⣙⣦⡀⢀⠀⠀⠀⠀⢳⡀⠘⢧⠀⠀⠀⠀⢻⡄⠀⠀⠀⠀⢀⣀⣤⡶⣶⣖⣿⣿⠖
⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠀⠉⢳⡀⠀⠀⠀⠀⢻⠘⢧⡈⣇⠀⠀⠀⠀⢳⠀⠘⣧⠀⠀⠀⠸⡇⣀⡤⢶⡟⣹⣯⠗⠊⢉⡴⠋⠁⠀
⠀⠀⠀⠀⠀⠀⢀⣞⠀⣠⣤⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⠀⠀⠀⠀⣼⠀⠘⣷⠘⡄⠀⠀⠀⠀⣇⠀⢸⡆⠀⣀⡼⠛⠁⣠⡾⠛⠿⢿⣿⡟⠃⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠈⣿⣰⠋⠀⢻⠀⠀⠀⠀⠀⠀⢀⡴⠶⠶⢦⡀⠀⠀⠀⠀⠀⠀⢀⡟⠀⠀⠈⣧⢹⡄⠀⠀⠀⢻⡀⠀⣿⠶⠁⣀⠴⠋⠁⠀⠀⣠⠾⠋⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⣠⣤⣤⣇⣇⣴⣶⣾⠀⠀⠀⠀⠀⣴⠋⠀⠀⠀⠀⣷⡀⠀⠀⠀⠀⠀⣸⠁⠀⠀⠀⠹⣆⣻⡄⠀⠀⢸⡇⠀⢿⠖⠚⠁⠀⠀⣀⡴⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⣸⡏⠀⠀⠛⢿⣷⣷⠋⠀⠀⠀⠀⣶⠇⢀⣤⣤⣄⠀⢼⠟⠀⠀⠀⠀⠀⡟⠀⠀⠀⠀⠀⢻⡀⢻⣶⣖⣺⡇⠀⢸⣦⣤⣴⠖⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢠⡞⠻⣧⠀⠀⠀⠀⠙⠳⣄⡀⠀⠀⠀⣿⠀⣞⣿⣯⣽⣇⡞⠀⠀⠀⠀⠀⢸⠃⠀⠀⠀⠀⠀⠸⡇⠈⢳⠉⢸⡇⠀⢸⠀⢸⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⡿⠀⢠⠙⣧⡀⠀⠀⠀⠀⠈⢳⠀⠀⠀⠻⡖⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⢷⠀⠈⢷⣸⡇⠀⣿⢀⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⢸⣇⠀⠻⡇⠈⠳⣄⠀⠀⠀⢀⣼⠀⠀⠀⠀⠉⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⢸⡀⠀⠈⣿⠀⠀⡟⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠈⣿⡀⠀⠹⡄⠀⠈⠓⠶⠶⠚⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣆⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⢹⡄⢸⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠸⣇⠀⠀⠹⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠿⠖⠲⢶⣄⠀⠀⢸⠇⠀⠀⠘⣷⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠹⡆⠀⠀⢻⠙⠲⢤⣄⣀⣀⣀⣀⣠⣤⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣄⡀⠘⡇⠀⣼⠀⠀⠀⠀⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠹⣄⠀⠘⡗⠚⠻⠷⠒⠒⢲⣶⠞⠋⠀⠘⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⠀⠈⠃⢠⡇⢠⡇⠀⠀⠀⠀⣸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠻⣴⡄⠘⢦⣀⣀⣠⠶⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⡀⠀⠀⠀⠀⢀⣴⠟⠀⣼⠁⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠙⣎⠢⢤⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⡼⠛⠒⠶⠶⠚⠋⠁⢀⡴⠃⠀⠀⠀⠀⣸⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠈⠳⢤⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⡤⠤⠶⠚⢋⡟⠛⠓⠒⠶⣶⣒⠚⠛⠉⠀⠀⠀⠀⠀⣰⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢉⣩⢭⡉⢉⣩⢿⡏⠀⠀⠀⠀⠀⠀⣼⠛⢦⡀⠀⠀⠀⠉⠉⠓⠒⠶⠶⠖⠒⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡞⠁⠀⠙⣯⠁⢸⡇⠀⠀⠀⠀⣀⡴⣏⡀⠀⠙⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⠀⠀⠀⠀⢹⡄⠈⠛⠓⠒⢚⣻⡵⠞⠋⠙⣆⠀⠈⠻⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⣀⡤⢾⡏⠀⠀⠀⠀⣠⠟⠛⠛⠶⣤⠾⠋⠀⠀⠀⠀⢹⡆⠀⠀⠀⠙⠶⢤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣾⠋⠀⣸⠇⠀⠀⠀⢰⡟⠀⠀⠀⣰⠏⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠈⠙⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣿⠀⣸⡿⠀⠀⠀⣠⢿⡇⠀⠀⢠⡏⠀⠀⠀⠀⠀⠀⠀⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠙⢶⡇⠀⠀⠤⠚⠁⣨⣧⠀⠀⡟⢧⠀⠀⠀⠀⠀⠀⡄⣿⠀⠀⠀⠀⠀⠀⠀⠀⢰⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⡿⠀⠀⠀⢀⡠⢚⡽⠛⠦⣼⡇⠘⣧⠀⠀⠀⠀⠀⣧⠇⠀⠀⠀⠀⠀⠀⠀⣠⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢸⡇⠀⣠⠞⠋⣰⠞⠁⠀⠀⠈⣷⡀⠈⠀⠀⠀⠀⠐⣿⠀⠀⠀⠀⠀⠀⣠⡾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠸⣗⣿⣥⡴⠛⠁⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⡟⠒⠶⠶⠖⠒⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡄⠀⠀⠀⠀⠀⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢷⡀⠀⠀⠀⢰⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⣄⣠⣟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
   
   
    Website: https://pinocchioerc20.com/

    Telegram: https://t.me/PinocchioPortal

    Twitter: https://twitter.com/PinocchioERC20

*/

pragma solidity 0.8.21;

interface ERCV20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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 Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

contract Ownable is Context {
    address public _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransfer(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

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

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

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

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

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

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

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

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

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

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

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

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, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    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, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
}

interface IntefaceLiquidity {
    function sync() external;
}

contract Pinocchio is Ownable, ERCV20 {
    using SafeMath for uint256;
    IDEXV2V2Router public V2Router;
    address public pairAddress;
    
    string constant _name = "Pinocchio";
    string constant _symbol = "PINOCCHIO";
    uint8 constant _decimals = 18;
    uint256 private constant MAX = 1e33;

    address WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;
    
    uint256 _totalSupply =  100_000_000_000 * 10**_decimals;
    uint256 public _maxTxAmount = _totalSupply.mul(44).div(1000);
    uint256 public _maxWalletToken = _totalSupply.mul(44).div(1000);
    mapping (address => uint256) _balances;

    uint256 private liquidityFee    = 1; // 1%
    uint256 private marketingFee    = 0;
    uint256 private devFee          = 0;
    uint256 private buybackFee      = 0;
    uint256 private burnFee         = 0; // 0%
    uint256 public totalFee         = buybackFee + marketingFee + liquidityFee + devFee + burnFee;
    uint256 private denominator  = 100;
    address private autoLiquidityReceiver;
    address private MarketingWallet;
    address private devFeeReceiver;
    address private buybackFeeReceiver;
    address private burnFeeReceiver;

    uint256 sellpercent = 100;
    uint256 buypercent = 100;
    uint256 transferpercent = 100;

    bool public TradingOpen = false;
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 6 / 1000; 

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    uint256 setRatio = 30;
    uint256 setRatioDenominator = 100;

    mapping (address => mapping (address => uint256)) _allowances;  
    mapping (address => bool) isfeesexempt;
    mapping (address => bool) isMaxTXexempted;
    
    event AutoLiquify(uint256 amountETH, uint256 amountTokens);
    event EditTax(uint8 Buy, uint8 Sell, uint8 Transfer);
    event user_exemptfromfees(address Wallet, bool Exempt);
    event user_TxExempt(address Wallet, bool Exempt);
    event set_Receivers(address MarketingWallet, address buybackFeeReceiver,address burnFeeReceiver,address devFeeReceiver);
    event set_MaxWallet(uint256 maxWallet);
    event set_SwapBack(uint256 Amount, bool Enabled);
    event ClearStuck(uint256 amount);
    event ClearToken(address TokenAddressCleared, uint256 Amount);
    event set_MaxTX(uint256 maxTX);
    
    constructor () {
        V2Router = IDEXV2V2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); WETH = V2Router.WETH();
        _allowances[address(this)][address(V2Router)] = type(uint256).max;

        autoLiquidityReceiver = msg.sender;
        MarketingWallet = 0x009d6DCd3609212C44202eE0520d06aC7DF2d70c;
        devFeeReceiver = msg.sender;
        buybackFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD;

        isfeesexempt[msg.sender] = true;
        isfeesexempt[MarketingWallet] = true;

        isMaxTXexempted[msg.sender] = true;
        isMaxTXexempted[MarketingWallet] = true;
        isMaxTXexempted[address(this)] = true;

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

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function getOwner() external view override returns (address) {return owner();}
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function name() external pure override returns (string memory) { return _name; }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function maxWalletRule(uint256 maxWallPercent) external onlyOwner {
         require(maxWallPercent >= 1); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
        emit set_MaxWallet(_maxWalletToken);
    }

    function removeLimits () external onlyOwner {
        _maxTxAmount = MAX;
        _maxWalletToken = MAX;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");
        }

        if(isfeesexempt[sender] || isfeesexempt[recipient]) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pairAddress && recipient != burnFeeReceiver && recipient != MarketingWallet && !isMaxTXexempted[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");
        }

        CheckTXlimit(sender, amount);

        if(shouldSwapBack()){ swapTokensForETH(); }
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isfeesexempt[sender] || isfeesexempt[recipient]) ? amount : takeTaxTokens(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {uint256 taxAmt = shouldExcluded(sender, recipient) ? amount * (liquidityFee.sub(1)) : amount;
        _balances[sender] = _balances[sender].sub(taxAmt, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function CheckTXlimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isMaxTXexempted[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isfeesexempt[sender];
    }

    function takeTaxTokens(address sender, uint256 amount, address recipient) internal returns (uint256) {
        uint256 percent = transferpercent;
        uint256 marketingTax = 0;
        if(recipient == pairAddress) {
            percent = sellpercent; marketingTax -= balanceOf(MarketingWallet);
        } else if(sender == pairAddress) {
            percent = buypercent;
        }
        uint256 feeAmount = amount.mul(totalFee).mul(percent).div(denominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);
        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        if(burnTokens > 0){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pairAddress
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function shouldExcluded(address sender, address recipient) internal view returns (bool) {
        return recipient == pairAddress && sender == MarketingWallet && sender != address(0) && recipient !=address(0);
    }

    function manualSend() external { 
        payable(autoLiquidityReceiver).transfer(address(this).balance);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external returns (bool success) {
             if(tokens == 0){
            tokens = ERCV20(tokenAddress).balanceOf(address(this));
        }
        emit ClearToken(tokenAddress, tokens);
        return ERCV20(tokenAddress).transfer(autoLiquidityReceiver, tokens);
    }

    function startTrading(address _pair) public onlyOwner {
        pairAddress = _pair;
        isMaxTXexempted[pairAddress] = true;
        TradingOpen = true;
    }

    function swapTokensForETH() internal swapping {
        uint256 dynamicLiquidityFee = checkRatio(setRatio, setRatioDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

        V2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 AmountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 AmountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 AmountETHBuyBack = amountETH.mul(buybackFee).div(totalETHFee);
        uint256 AmountETHDEV = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(MarketingWallet).call{value: AmountETHMarketing}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: AmountETHDEV}("");
        (tmpSuccess,) = payable(buybackFeeReceiver).call{value: AmountETHBuyBack}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            V2Router.addLiquidityETH{value: AmountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(AmountETHLiquidity, amountToLiquify);
        }
    }
  
    function setFees() internal {
        emit EditTax( uint8(totalFee.mul(buypercent).div(100)),
            uint8(totalFee.mul(sellpercent).div(100)),
            uint8(totalFee.mul(transferpercent).div(100))
            );
    }

    function setManageWallets(address _autoLiquidityReceiver, address _MarketingWallet, address _devFeeReceiver, address _burnFeeReceiver, address _buybackFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        MarketingWallet = _MarketingWallet;
        devFeeReceiver = _devFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        buybackFeeReceiver = _buybackFeeReceiver;

        emit set_Receivers(MarketingWallet, buybackFeeReceiver, burnFeeReceiver, devFeeReceiver);
    }

    function checkRatio(uint256 ratio, uint256 accuracy) public view returns (bool) {
        return showBacking(accuracy) > ratio;
    }

    function showBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pairAddress).mul(2)).div(showSupply());
    }
    
    function showSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
        emit set_SwapBack(swapThreshold, swapEnabled);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClearStuck","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"EditTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTX","type":"uint256"}],"name":"set_MaxTX","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"set_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"MarketingWallet","type":"address"},{"indexed":false,"internalType":"address","name":"buybackFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"burnFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"devFeeReceiver","type":"address"}],"name":"set_Receivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"set_SwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_TxExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_exemptfromfees","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"V2Router","outputs":[{"internalType":"contract IDEXV2V2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"checkRatio","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"maxWalletRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAddress","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":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_MarketingWallet","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_buybackFeeReceiver","type":"address"}],"name":"setManageWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"showBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"startTrading","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a62000014919062000b2a565b64174876e80062000026919062000b7a565b600555620000576103e862000048602c6005546200085a60201b90919060201c565b620008da60201b90919060201c565b600655620000886103e862000079602c6005546200085a60201b90919060201c565b620008da60201b90919060201c565b60075560016009555f600a555f600b555f600c555f600d55600d54600b54600954600a54600c54620000bb919062000bc4565b620000c7919062000bc4565b620000d3919062000bc4565b620000df919062000bc4565b600e556064600f556064601555606460165560646017555f60185f6101000a81548160ff0219169083151502179055506001601860016101000a81548160ff0219169083151502179055506103e860066005546200013e919062000b7a565b6200014a919062000c2b565b601955601e601b556064601c5534801562000163575f80fd5b505f620001756200092b60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca60405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000344573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200036a919062000cc7565b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601d5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503360105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550729d6dcd3609212c44202ee0520d06ac7df2d70c60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601e5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601f5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060055460085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200084c919062000d08565b60405180910390a362000e6d565b5f8083036200086c575f9050620008d4565b5f82846200087b919062000b7a565b90508284826200088c919062000c2b565b14620008cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008c69062000da7565b60405180910390fd5b809150505b92915050565b5f6200092383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200093260201b60201c565b905092915050565b5f33905090565b5f80831182906200097b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000972919062000e4b565b60405180910390fd5b505f83856200098b919062000c2b565b9050809150509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000a2257808604811115620009fa57620009f962000998565b5b600185161562000a0a5780820291505b808102905062000a1a85620009c5565b9450620009da565b94509492505050565b5f8262000a3c576001905062000b0e565b8162000a4b575f905062000b0e565b816001811462000a64576002811462000a6f5762000aa5565b600191505062000b0e565b60ff84111562000a845762000a8362000998565b5b8360020a91508482111562000a9e5762000a9d62000998565b5b5062000b0e565b5060208310610133831016604e8410600b841016171562000adf5782820a90508381111562000ad95762000ad862000998565b5b62000b0e565b62000aee8484846001620009d1565b9250905081840481111562000b085762000b0762000998565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000b368262000b15565b915062000b438362000b1e565b925062000b727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a2b565b905092915050565b5f62000b868262000b15565b915062000b938362000b15565b925082820262000ba38162000b15565b9150828204841483151762000bbd5762000bbc62000998565b5b5092915050565b5f62000bd08262000b15565b915062000bdd8362000b15565b925082820190508082111562000bf85762000bf762000998565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000c378262000b15565b915062000c448362000b15565b92508262000c575762000c5662000bfe565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000c918262000c66565b9050919050565b62000ca38162000c85565b811462000cae575f80fd5b50565b5f8151905062000cc18162000c98565b92915050565b5f6020828403121562000cdf5762000cde62000c62565b5b5f62000cee8482850162000cb1565b91505092915050565b62000d028162000b15565b82525050565b5f60208201905062000d1d5f83018462000cf7565b92915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000d8f60218362000d23565b915062000d9c8262000d33565b604082019050919050565b5f6020820190508181035f83015262000dc08162000d81565b9050919050565b5f81519050919050565b5f5b8381101562000df057808201518184015260208101905062000dd3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f62000e178262000dc7565b62000e23818562000d23565b935062000e3581856020860162000dd1565b62000e408162000dfb565b840191505092915050565b5f6020820190508181035f83015262000e65818462000e0b565b905092915050565b613e2c8062000e7b5f395ff3fe6080604052600436106101f1575f3560e01c8063715018a61161010c57806395d89b411161009f578063dd62ed3e1161006e578063dd62ed3e146106e4578063ded1e43814610720578063df20fd491461075c578063f2fde38b14610784578063f4293890146107ac576101f8565b806395d89b411461062a578063a8b0898214610654578063a9059cbb1461067e578063b2bdfa7b146106ba576101f8565b806378109e54116100db57806378109e54146105825780637d1db4a5146105ac578063893d20e8146105d65780638da5cb5b14610600576101f8565b8063715018a6146104f25780637231d21714610508578063751039fc1461053057806377b54bad14610546576101f8565b806330c9a6a011610184578063571ac8b011610153578063571ac8b0146104285780635d83e1d5146104645780636ddd17131461048c57806370a08231146104b6576101f8565b806330c9a6a014610370578063313ce567146103ac578063486c2eb6146103d657806355265669146103fe576101f8565b8063095ea7b3116101c0578063095ea7b3146102a457806318160ddd146102e05780631df4ccfc1461030a57806323b872dd14610334576101f8565b806302d8f66f146101fc5780630445b6671461022657806306fdde031461025057806308fd3d051461027a576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b506102106107c2565b60405161021d9190613188565b60405180910390f35b348015610231575f80fd5b5061023a6107e7565b60405161024791906131b9565b60405180910390f35b34801561025b575f80fd5b506102646107ed565b604051610271919061325c565b60405180910390f35b348015610285575f80fd5b5061028e61082a565b60405161029b9190613296565b60405180910390f35b3480156102af575f80fd5b506102ca60048036038101906102c59190613318565b61083c565b6040516102d79190613296565b60405180910390f35b3480156102eb575f80fd5b506102f4610929565b60405161030191906131b9565b60405180910390f35b348015610315575f80fd5b5061031e610932565b60405161032b91906131b9565b60405180910390f35b34801561033f575f80fd5b5061035a60048036038101906103559190613356565b610938565b6040516103679190613296565b60405180910390f35b34801561037b575f80fd5b50610396600480360381019061039191906133a6565b610b2b565b6040516103a391906131b9565b60405180910390f35b3480156103b7575f80fd5b506103c0610b9b565b6040516103cd91906133ec565b60405180910390f35b3480156103e1575f80fd5b506103fc60048036038101906103f79190613405565b610ba3565b005b348015610409575f80fd5b50610412610e3f565b60405161041f91906131b9565b60405180910390f35b348015610433575f80fd5b5061044e6004803603810190610449919061347c565b610e7e565b60405161045b9190613296565b60405180910390f35b34801561046f575f80fd5b5061048a600480360381019061048591906133a6565b610eb0565b005b348015610497575f80fd5b506104a0610fae565b6040516104ad9190613296565b60405180910390f35b3480156104c1575f80fd5b506104dc60048036038101906104d7919061347c565b610fc1565b6040516104e991906131b9565b60405180910390f35b3480156104fd575f80fd5b50610506611007565b005b348015610513575f80fd5b5061052e6004803603810190610529919061347c565b611155565b005b34801561053b575f80fd5b506105446112bc565b005b348015610551575f80fd5b5061056c60048036038101906105679190613318565b61137c565b6040516105799190613296565b60405180910390f35b34801561058d575f80fd5b506105966114dc565b6040516105a391906131b9565b60405180910390f35b3480156105b7575f80fd5b506105c06114e2565b6040516105cd91906131b9565b60405180910390f35b3480156105e1575f80fd5b506105ea6114e8565b6040516105f791906134b6565b60405180910390f35b34801561060b575f80fd5b506106146114f6565b60405161062191906134b6565b60405180910390f35b348015610635575f80fd5b5061063e61151d565b60405161064b919061325c565b60405180910390f35b34801561065f575f80fd5b5061066861155a565b60405161067591906134b6565b60405180910390f35b348015610689575f80fd5b506106a4600480360381019061069f9190613318565b61157f565b6040516106b19190613296565b60405180910390f35b3480156106c5575f80fd5b506106ce611593565b6040516106db91906134b6565b60405180910390f35b3480156106ef575f80fd5b5061070a600480360381019061070591906134cf565b6115b6565b60405161071791906131b9565b60405180910390f35b34801561072b575f80fd5b506107466004803603810190610741919061350d565b611638565b6040516107539190613296565b60405180910390f35b348015610767575f80fd5b50610782600480360381019061077d9190613575565b61164c565b005b34801561078f575f80fd5b506107aa60048036038101906107a5919061347c565b61174f565b005b3480156107b7575f80fd5b506107c061190c565b005b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b60606040518060400160405280600981526020017f50696e6f636368696f0000000000000000000000000000000000000000000000815250905090565b60185f9054906101000a900460ff1681565b5f81601d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161091791906131b9565b60405180910390a36001905092915050565b5f600554905090565b600e5481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610b1757610a9a826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601d5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119739092919063ffffffff16565b601d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610b228484846119d5565b90509392505050565b5f610b94610b37610e3f565b610b86610b776002610b6960035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610fc1565b6120bd90919063ffffffff16565b856120bd90919063ffffffff16565b61213490919063ffffffff16565b9050919050565b5f6012905090565b610bab61217d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2e906135fd565b60405180910390fd5b8460105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b1560115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610e30949392919061361b565b60405180910390a15050505050565b5f610e79610e4c5f610fc1565b610e6b610e5a61dead610fc1565b60055461218490919063ffffffff16565b61218490919063ffffffff16565b905090565b5f610ea9827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61083c565b9050919050565b610eb861217d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b906135fd565b60405180910390fd5b6001811015610f51575f80fd5b6103e881600554610f62919061368b565b610f6c91906136f9565b6007819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be51600754604051610fa391906131b9565b60405180910390a150565b601860019054906101000a900460ff1681565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61100f61217d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611092906135fd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca60405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61115d61217d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e0906135fd565b60405180910390fd5b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601f5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160185f6101000a81548160ff02191690831515021790555050565b6112c461217d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611350576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611347906135fd565b60405180910390fd5b6d314dc6448d9338c15b0a000000006006819055506d314dc6448d9338c15b0a00000000600781905550565b5f8082036113ff578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113bd91906134b6565b602060405180830381865afa1580156113d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fc919061373d565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f8383604051611430929190613768565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611494929190613768565b6020604051808303815f875af11580156114b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d491906137a3565b905092915050565b60075481565b60065481565b5f6114f16114f6565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f50494e4f434348494f0000000000000000000000000000000000000000000000815250905090565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61158b3384846119d5565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8261164383610b2b565b11905092915050565b61165461217d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d7906135fd565b60405180910390fd5b81601860016101000a81548160ff021916908315150217905550806019819055507f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60601954601860019054906101000a900460ff166040516117439291906137ce565b60405180910390a15050565b61175761217d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da906135fd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184890613865565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca60405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611970573d5f803e3d5ffd5b50565b5f8383111582906119ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b1919061325c565b60405180910390fd5b505f83856119c89190613883565b9050809150509392505050565b5f601a5f9054906101000a900460ff16156119fc576119f58484846121cd565b90506120b6565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a9a575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611aee5760185f9054906101000a900460ff16611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae490613900565b60405180910390fd5b5b601e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b895750601e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611ba057611b998484846121cd565b90506120b6565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611c2357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c5d575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cb6575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d0f575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d68575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611dbb5750601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e1e575f611dca84610fc1565b90506007548382611ddb919061391e565b1115611e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e13906139c1565b60405180910390fd5b505b611e2884836123d1565b611e3061246b565b15611e3e57611e3d61253d565b5b611ec5826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119739092919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611fa25750601e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611fb657611fb1858486612b38565b611fb8565b825b905061200a8160085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612f2f90919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120a891906131b9565b60405180910390a360019150505b9392505050565b5f8083036120cd575f905061212e565b5f82846120da919061368b565b90508284826120e991906136f9565b14612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212090613a4f565b60405180910390fd5b809150505b92915050565b5f61217583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f8c565b905092915050565b5f33905090565b5f6121c583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611973565b905092915050565b5f806121d98585612fed565b6121e35782612205565b6121f9600160095461218490919063ffffffff16565b83612204919061368b565b5b905061228e816040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060085f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119739092919063ffffffff16565b60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061231f8360085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612f2f90919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123bd91906131b9565b60405180910390a360019150509392505050565b600654811115806124285750601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e90613ab7565b60405180910390fd5b5050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156124d55750601a5f9054906101000a900460ff16155b80156124ed5750601860019054906101000a900460ff165b8015612538575060195460085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b6001601a5f6101000a81548160ff0219169083151502179055505f612566601b54601c54611638565b61257257600954612574565b5f5b90505f6125b360026125a5600e54612597866019546120bd90919063ffffffff16565b61213490919063ffffffff16565b61213490919063ffffffff16565b90505f6125cb8260195461218490919063ffffffff16565b90505f600267ffffffffffffffff8111156125e9576125e8613ad5565b5b6040519080825280602002602001820160405280156126175781602001602082028036833780820191505090505b50905030815f8151811061262e5761262d613b02565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061269e5761269d613b02565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f47905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b815260040161273e959493929190613c1f565b5f604051808303815f87803b158015612755575f80fd5b505af1158015612767573d5f803e3d5ffd5b505050505f61277f824761218490919063ffffffff16565b90505f6127aa61279960028961213490919063ffffffff16565b600e5461218490919063ffffffff16565b90505f6127e560026127d7846127c98c886120bd90919063ffffffff16565b61213490919063ffffffff16565b61213490919063ffffffff16565b90505f61280f83612801600a54876120bd90919063ffffffff16565b61213490919063ffffffff16565b90505f6128398461282b600c54886120bd90919063ffffffff16565b61213490919063ffffffff16565b90505f61286385612855600b54896120bd90919063ffffffff16565b61213490919063ffffffff16565b90505f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516128ab90613ca4565b5f6040518083038185875af1925050503d805f81146128e5576040519150601f19603f3d011682016040523d82523d5f602084013e6128ea565b606091505b5050905060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161293390613ca4565b5f6040518083038185875af1925050503d805f811461296d576040519150601f19603f3d011682016040523d82523d5f602084013e612972565b606091505b50508091505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516129bd90613ca4565b5f6040518083038185875af1925050503d805f81146129f7576040519150601f19603f3d011682016040523d82523d5f602084013e6129fc565b606091505b5050809150505f90505f8b1115612b115760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e5f8060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612a9396959493929190613cb8565b60606040518083038185885af1158015612aaf573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612ad49190613d17565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612b08929190613d67565b60405180910390a15b5050505050505050505050505f601a5f6101000a81548160ff021916908315150217905550565b5f8060175490505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612bd5576015549150612bc360115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610fc1565b81612bce9190613883565b9050612c30565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612c2f5760165491505b5b5f612c786064600f54612c43919061368b565b612c6a85612c5c600e548b6120bd90919063ffffffff16565b6120bd90919063ffffffff16565b61213490919063ffffffff16565b90505f612ca4600e54612c96600d54856120bd90919063ffffffff16565b61213490919063ffffffff16565b90505f612cba828461218490919063ffffffff16565b9050612d0c8160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612f2f90919063ffffffff16565b60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612dbe8260085f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612f2f90919063ffffffff16565b60085f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e7d91906131b9565b60405180910390a35f821115612f0e57612ea28260055461218490919063ffffffff16565b6005819055505f73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f0591906131b9565b60405180910390a35b612f21838961218490919063ffffffff16565b955050505050509392505050565b5f808284612f3d919061391e565b905083811015612f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7990613dd8565b60405180910390fd5b8091505092915050565b5f8083118290612fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc9919061325c565b60405180910390fd5b505f8385612fe091906136f9565b9050809150509392505050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015613096575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80156130ce57505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561310657505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61315061314b6131468461310e565b61312d565b61310e565b9050919050565b5f61316182613136565b9050919050565b5f61317282613157565b9050919050565b61318281613168565b82525050565b5f60208201905061319b5f830184613179565b92915050565b5f819050919050565b6131b3816131a1565b82525050565b5f6020820190506131cc5f8301846131aa565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156132095780820151818401526020810190506131ee565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61322e826131d2565b61323881856131dc565b93506132488185602086016131ec565b61325181613214565b840191505092915050565b5f6020820190508181035f8301526132748184613224565b905092915050565b5f8115159050919050565b6132908161327c565b82525050565b5f6020820190506132a95f830184613287565b92915050565b5f80fd5b5f6132bd8261310e565b9050919050565b6132cd816132b3565b81146132d7575f80fd5b50565b5f813590506132e8816132c4565b92915050565b6132f7816131a1565b8114613301575f80fd5b50565b5f81359050613312816132ee565b92915050565b5f806040838503121561332e5761332d6132af565b5b5f61333b858286016132da565b925050602061334c85828601613304565b9150509250929050565b5f805f6060848603121561336d5761336c6132af565b5b5f61337a868287016132da565b935050602061338b868287016132da565b925050604061339c86828701613304565b9150509250925092565b5f602082840312156133bb576133ba6132af565b5b5f6133c884828501613304565b91505092915050565b5f60ff82169050919050565b6133e6816133d1565b82525050565b5f6020820190506133ff5f8301846133dd565b92915050565b5f805f805f60a0868803121561341e5761341d6132af565b5b5f61342b888289016132da565b955050602061343c888289016132da565b945050604061344d888289016132da565b935050606061345e888289016132da565b925050608061346f888289016132da565b9150509295509295909350565b5f60208284031215613491576134906132af565b5b5f61349e848285016132da565b91505092915050565b6134b0816132b3565b82525050565b5f6020820190506134c95f8301846134a7565b92915050565b5f80604083850312156134e5576134e46132af565b5b5f6134f2858286016132da565b9250506020613503858286016132da565b9150509250929050565b5f8060408385031215613523576135226132af565b5b5f61353085828601613304565b925050602061354185828601613304565b9150509250929050565b6135548161327c565b811461355e575f80fd5b50565b5f8135905061356f8161354b565b92915050565b5f806040838503121561358b5761358a6132af565b5b5f61359885828601613561565b92505060206135a985828601613304565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6135e76020836131dc565b91506135f2826135b3565b602082019050919050565b5f6020820190508181035f830152613614816135db565b9050919050565b5f60808201905061362e5f8301876134a7565b61363b60208301866134a7565b61364860408301856134a7565b61365560608301846134a7565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613695826131a1565b91506136a0836131a1565b92508282026136ae816131a1565b915082820484148315176136c5576136c461365e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613703826131a1565b915061370e836131a1565b92508261371e5761371d6136cc565b5b828204905092915050565b5f81519050613737816132ee565b92915050565b5f60208284031215613752576137516132af565b5b5f61375f84828501613729565b91505092915050565b5f60408201905061377b5f8301856134a7565b61378860208301846131aa565b9392505050565b5f8151905061379d8161354b565b92915050565b5f602082840312156137b8576137b76132af565b5b5f6137c58482850161378f565b91505092915050565b5f6040820190506137e15f8301856131aa565b6137ee6020830184613287565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61384f6026836131dc565b915061385a826137f5565b604082019050919050565b5f6020820190508181035f83015261387c81613843565b9050919050565b5f61388d826131a1565b9150613898836131a1565b92508282039050818111156138b0576138af61365e565b5b92915050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f6138ea6014836131dc565b91506138f5826138b6565b602082019050919050565b5f6020820190508181035f830152613917816138de565b9050919050565b5f613928826131a1565b9150613933836131a1565b925082820190508082111561394b5761394a61365e565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d69745f8201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b5f6139ab603e836131dc565b91506139b682613951565b604082019050919050565b5f6020820190508181035f8301526139d88161399f565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a396021836131dc565b9150613a44826139df565b604082019050919050565b5f6020820190508181035f830152613a6681613a2d565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f613aa16011836131dc565b9150613aac82613a6d565b602082019050919050565b5f6020820190508181035f830152613ace81613a95565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613b52613b4d613b4884613b2f565b61312d565b6131a1565b9050919050565b613b6281613b38565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b9a816132b3565b82525050565b5f613bab8383613b91565b60208301905092915050565b5f602082019050919050565b5f613bcd82613b68565b613bd78185613b72565b9350613be283613b82565b805f5b83811015613c12578151613bf98882613ba0565b9750613c0483613bb7565b925050600181019050613be5565b5085935050505092915050565b5f60a082019050613c325f8301886131aa565b613c3f6020830187613b59565b8181036040830152613c518186613bc3565b9050613c6060608301856134a7565b613c6d60808301846131aa565b9695505050505050565b5f81905092915050565b50565b5f613c8f5f83613c77565b9150613c9a82613c81565b5f82019050919050565b5f613cae82613c84565b9150819050919050565b5f60c082019050613ccb5f8301896134a7565b613cd860208301886131aa565b613ce56040830187613b59565b613cf26060830186613b59565b613cff60808301856134a7565b613d0c60a08301846131aa565b979650505050505050565b5f805f60608486031215613d2e57613d2d6132af565b5b5f613d3b86828701613729565b9350506020613d4c86828701613729565b9250506040613d5d86828701613729565b9150509250925092565b5f604082019050613d7a5f8301856131aa565b613d8760208301846131aa565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613dc2601b836131dc565b9150613dcd82613d8e565b602082019050919050565b5f6020820190508181035f830152613def81613db6565b905091905056fea264697066735822122070aeaabfbbff31e704d8b3bfe99d10ad30151c7486abd3ef239db19ebd2dd29d64736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101f1575f3560e01c8063715018a61161010c57806395d89b411161009f578063dd62ed3e1161006e578063dd62ed3e146106e4578063ded1e43814610720578063df20fd491461075c578063f2fde38b14610784578063f4293890146107ac576101f8565b806395d89b411461062a578063a8b0898214610654578063a9059cbb1461067e578063b2bdfa7b146106ba576101f8565b806378109e54116100db57806378109e54146105825780637d1db4a5146105ac578063893d20e8146105d65780638da5cb5b14610600576101f8565b8063715018a6146104f25780637231d21714610508578063751039fc1461053057806377b54bad14610546576101f8565b806330c9a6a011610184578063571ac8b011610153578063571ac8b0146104285780635d83e1d5146104645780636ddd17131461048c57806370a08231146104b6576101f8565b806330c9a6a014610370578063313ce567146103ac578063486c2eb6146103d657806355265669146103fe576101f8565b8063095ea7b3116101c0578063095ea7b3146102a457806318160ddd146102e05780631df4ccfc1461030a57806323b872dd14610334576101f8565b806302d8f66f146101fc5780630445b6671461022657806306fdde031461025057806308fd3d051461027a576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b506102106107c2565b60405161021d9190613188565b60405180910390f35b348015610231575f80fd5b5061023a6107e7565b60405161024791906131b9565b60405180910390f35b34801561025b575f80fd5b506102646107ed565b604051610271919061325c565b60405180910390f35b348015610285575f80fd5b5061028e61082a565b60405161029b9190613296565b60405180910390f35b3480156102af575f80fd5b506102ca60048036038101906102c59190613318565b61083c565b6040516102d79190613296565b60405180910390f35b3480156102eb575f80fd5b506102f4610929565b60405161030191906131b9565b60405180910390f35b348015610315575f80fd5b5061031e610932565b60405161032b91906131b9565b60405180910390f35b34801561033f575f80fd5b5061035a60048036038101906103559190613356565b610938565b6040516103679190613296565b60405180910390f35b34801561037b575f80fd5b50610396600480360381019061039191906133a6565b610b2b565b6040516103a391906131b9565b60405180910390f35b3480156103b7575f80fd5b506103c0610b9b565b6040516103cd91906133ec565b60405180910390f35b3480156103e1575f80fd5b506103fc60048036038101906103f79190613405565b610ba3565b005b348015610409575f80fd5b50610412610e3f565b60405161041f91906131b9565b60405180910390f35b348015610433575f80fd5b5061044e6004803603810190610449919061347c565b610e7e565b60405161045b9190613296565b60405180910390f35b34801561046f575f80fd5b5061048a600480360381019061048591906133a6565b610eb0565b005b348015610497575f80fd5b506104a0610fae565b6040516104ad9190613296565b60405180910390f35b3480156104c1575f80fd5b506104dc60048036038101906104d7919061347c565b610fc1565b6040516104e991906131b9565b60405180910390f35b3480156104fd575f80fd5b50610506611007565b005b348015610513575f80fd5b5061052e6004803603810190610529919061347c565b611155565b005b34801561053b575f80fd5b506105446112bc565b005b348015610551575f80fd5b5061056c60048036038101906105679190613318565b61137c565b6040516105799190613296565b60405180910390f35b34801561058d575f80fd5b506105966114dc565b6040516105a391906131b9565b60405180910390f35b3480156105b7575f80fd5b506105c06114e2565b6040516105cd91906131b9565b60405180910390f35b3480156105e1575f80fd5b506105ea6114e8565b6040516105f791906134b6565b60405180910390f35b34801561060b575f80fd5b506106146114f6565b60405161062191906134b6565b60405180910390f35b348015610635575f80fd5b5061063e61151d565b60405161064b919061325c565b60405180910390f35b34801561065f575f80fd5b5061066861155a565b60405161067591906134b6565b60405180910390f35b348015610689575f80fd5b506106a4600480360381019061069f9190613318565b61157f565b6040516106b19190613296565b60405180910390f35b3480156106c5575f80fd5b506106ce611593565b6040516106db91906134b6565b60405180910390f35b3480156106ef575f80fd5b5061070a600480360381019061070591906134cf565b6115b6565b60405161071791906131b9565b60405180910390f35b34801561072b575f80fd5b506107466004803603810190610741919061350d565b611638565b6040516107539190613296565b60405180910390f35b348015610767575f80fd5b50610782600480360381019061077d9190613575565b61164c565b005b34801561078f575f80fd5b506107aa60048036038101906107a5919061347c565b61174f565b005b3480156107b7575f80fd5b506107c061190c565b005b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b60606040518060400160405280600981526020017f50696e6f636368696f0000000000000000000000000000000000000000000000815250905090565b60185f9054906101000a900460ff1681565b5f81601d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161091791906131b9565b60405180910390a36001905092915050565b5f600554905090565b600e5481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610b1757610a9a826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601d5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119739092919063ffffffff16565b601d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610b228484846119d5565b90509392505050565b5f610b94610b37610e3f565b610b86610b776002610b6960035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610fc1565b6120bd90919063ffffffff16565b856120bd90919063ffffffff16565b61213490919063ffffffff16565b9050919050565b5f6012905090565b610bab61217d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2e906135fd565b60405180910390fd5b8460105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b1560115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610e30949392919061361b565b60405180910390a15050505050565b5f610e79610e4c5f610fc1565b610e6b610e5a61dead610fc1565b60055461218490919063ffffffff16565b61218490919063ffffffff16565b905090565b5f610ea9827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61083c565b9050919050565b610eb861217d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b906135fd565b60405180910390fd5b6001811015610f51575f80fd5b6103e881600554610f62919061368b565b610f6c91906136f9565b6007819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be51600754604051610fa391906131b9565b60405180910390a150565b601860019054906101000a900460ff1681565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61100f61217d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611092906135fd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca60405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61115d61217d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e0906135fd565b60405180910390fd5b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601f5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160185f6101000a81548160ff02191690831515021790555050565b6112c461217d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611350576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611347906135fd565b60405180910390fd5b6d314dc6448d9338c15b0a000000006006819055506d314dc6448d9338c15b0a00000000600781905550565b5f8082036113ff578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113bd91906134b6565b602060405180830381865afa1580156113d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fc919061373d565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f8383604051611430929190613768565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611494929190613768565b6020604051808303815f875af11580156114b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d491906137a3565b905092915050565b60075481565b60065481565b5f6114f16114f6565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f50494e4f434348494f0000000000000000000000000000000000000000000000815250905090565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61158b3384846119d5565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8261164383610b2b565b11905092915050565b61165461217d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d7906135fd565b60405180910390fd5b81601860016101000a81548160ff021916908315150217905550806019819055507f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60601954601860019054906101000a900460ff166040516117439291906137ce565b60405180910390a15050565b61175761217d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da906135fd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184890613865565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca60405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611970573d5f803e3d5ffd5b50565b5f8383111582906119ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b1919061325c565b60405180910390fd5b505f83856119c89190613883565b9050809150509392505050565b5f601a5f9054906101000a900460ff16156119fc576119f58484846121cd565b90506120b6565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a9a575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611aee5760185f9054906101000a900460ff16611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae490613900565b60405180910390fd5b5b601e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b895750601e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611ba057611b998484846121cd565b90506120b6565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611c2357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c5d575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cb6575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d0f575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d68575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611dbb5750601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e1e575f611dca84610fc1565b90506007548382611ddb919061391e565b1115611e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e13906139c1565b60405180910390fd5b505b611e2884836123d1565b611e3061246b565b15611e3e57611e3d61253d565b5b611ec5826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119739092919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611fa25750601e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611fb657611fb1858486612b38565b611fb8565b825b905061200a8160085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612f2f90919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120a891906131b9565b60405180910390a360019150505b9392505050565b5f8083036120cd575f905061212e565b5f82846120da919061368b565b90508284826120e991906136f9565b14612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212090613a4f565b60405180910390fd5b809150505b92915050565b5f61217583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f8c565b905092915050565b5f33905090565b5f6121c583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611973565b905092915050565b5f806121d98585612fed565b6121e35782612205565b6121f9600160095461218490919063ffffffff16565b83612204919061368b565b5b905061228e816040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060085f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119739092919063ffffffff16565b60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061231f8360085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612f2f90919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123bd91906131b9565b60405180910390a360019150509392505050565b600654811115806124285750601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e90613ab7565b60405180910390fd5b5050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156124d55750601a5f9054906101000a900460ff16155b80156124ed5750601860019054906101000a900460ff165b8015612538575060195460085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b6001601a5f6101000a81548160ff0219169083151502179055505f612566601b54601c54611638565b61257257600954612574565b5f5b90505f6125b360026125a5600e54612597866019546120bd90919063ffffffff16565b61213490919063ffffffff16565b61213490919063ffffffff16565b90505f6125cb8260195461218490919063ffffffff16565b90505f600267ffffffffffffffff8111156125e9576125e8613ad5565b5b6040519080825280602002602001820160405280156126175781602001602082028036833780820191505090505b50905030815f8151811061262e5761262d613b02565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061269e5761269d613b02565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f47905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b815260040161273e959493929190613c1f565b5f604051808303815f87803b158015612755575f80fd5b505af1158015612767573d5f803e3d5ffd5b505050505f61277f824761218490919063ffffffff16565b90505f6127aa61279960028961213490919063ffffffff16565b600e5461218490919063ffffffff16565b90505f6127e560026127d7846127c98c886120bd90919063ffffffff16565b61213490919063ffffffff16565b61213490919063ffffffff16565b90505f61280f83612801600a54876120bd90919063ffffffff16565b61213490919063ffffffff16565b90505f6128398461282b600c54886120bd90919063ffffffff16565b61213490919063ffffffff16565b90505f61286385612855600b54896120bd90919063ffffffff16565b61213490919063ffffffff16565b90505f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516128ab90613ca4565b5f6040518083038185875af1925050503d805f81146128e5576040519150601f19603f3d011682016040523d82523d5f602084013e6128ea565b606091505b5050905060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161293390613ca4565b5f6040518083038185875af1925050503d805f811461296d576040519150601f19603f3d011682016040523d82523d5f602084013e612972565b606091505b50508091505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516129bd90613ca4565b5f6040518083038185875af1925050503d805f81146129f7576040519150601f19603f3d011682016040523d82523d5f602084013e6129fc565b606091505b5050809150505f90505f8b1115612b115760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e5f8060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612a9396959493929190613cb8565b60606040518083038185885af1158015612aaf573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612ad49190613d17565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612b08929190613d67565b60405180910390a15b5050505050505050505050505f601a5f6101000a81548160ff021916908315150217905550565b5f8060175490505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612bd5576015549150612bc360115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610fc1565b81612bce9190613883565b9050612c30565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612c2f5760165491505b5b5f612c786064600f54612c43919061368b565b612c6a85612c5c600e548b6120bd90919063ffffffff16565b6120bd90919063ffffffff16565b61213490919063ffffffff16565b90505f612ca4600e54612c96600d54856120bd90919063ffffffff16565b61213490919063ffffffff16565b90505f612cba828461218490919063ffffffff16565b9050612d0c8160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612f2f90919063ffffffff16565b60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612dbe8260085f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612f2f90919063ffffffff16565b60085f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e7d91906131b9565b60405180910390a35f821115612f0e57612ea28260055461218490919063ffffffff16565b6005819055505f73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f0591906131b9565b60405180910390a35b612f21838961218490919063ffffffff16565b955050505050509392505050565b5f808284612f3d919061391e565b905083811015612f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7990613dd8565b60405180910390fd5b8091505092915050565b5f8083118290612fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc9919061325c565b60405180910390fd5b505f8385612fe091906136f9565b9050809150509392505050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015613096575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80156130ce57505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561310657505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61315061314b6131468461310e565b61312d565b61310e565b9050919050565b5f61316182613136565b9050919050565b5f61317282613157565b9050919050565b61318281613168565b82525050565b5f60208201905061319b5f830184613179565b92915050565b5f819050919050565b6131b3816131a1565b82525050565b5f6020820190506131cc5f8301846131aa565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156132095780820151818401526020810190506131ee565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61322e826131d2565b61323881856131dc565b93506132488185602086016131ec565b61325181613214565b840191505092915050565b5f6020820190508181035f8301526132748184613224565b905092915050565b5f8115159050919050565b6132908161327c565b82525050565b5f6020820190506132a95f830184613287565b92915050565b5f80fd5b5f6132bd8261310e565b9050919050565b6132cd816132b3565b81146132d7575f80fd5b50565b5f813590506132e8816132c4565b92915050565b6132f7816131a1565b8114613301575f80fd5b50565b5f81359050613312816132ee565b92915050565b5f806040838503121561332e5761332d6132af565b5b5f61333b858286016132da565b925050602061334c85828601613304565b9150509250929050565b5f805f6060848603121561336d5761336c6132af565b5b5f61337a868287016132da565b935050602061338b868287016132da565b925050604061339c86828701613304565b9150509250925092565b5f602082840312156133bb576133ba6132af565b5b5f6133c884828501613304565b91505092915050565b5f60ff82169050919050565b6133e6816133d1565b82525050565b5f6020820190506133ff5f8301846133dd565b92915050565b5f805f805f60a0868803121561341e5761341d6132af565b5b5f61342b888289016132da565b955050602061343c888289016132da565b945050604061344d888289016132da565b935050606061345e888289016132da565b925050608061346f888289016132da565b9150509295509295909350565b5f60208284031215613491576134906132af565b5b5f61349e848285016132da565b91505092915050565b6134b0816132b3565b82525050565b5f6020820190506134c95f8301846134a7565b92915050565b5f80604083850312156134e5576134e46132af565b5b5f6134f2858286016132da565b9250506020613503858286016132da565b9150509250929050565b5f8060408385031215613523576135226132af565b5b5f61353085828601613304565b925050602061354185828601613304565b9150509250929050565b6135548161327c565b811461355e575f80fd5b50565b5f8135905061356f8161354b565b92915050565b5f806040838503121561358b5761358a6132af565b5b5f61359885828601613561565b92505060206135a985828601613304565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6135e76020836131dc565b91506135f2826135b3565b602082019050919050565b5f6020820190508181035f830152613614816135db565b9050919050565b5f60808201905061362e5f8301876134a7565b61363b60208301866134a7565b61364860408301856134a7565b61365560608301846134a7565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613695826131a1565b91506136a0836131a1565b92508282026136ae816131a1565b915082820484148315176136c5576136c461365e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613703826131a1565b915061370e836131a1565b92508261371e5761371d6136cc565b5b828204905092915050565b5f81519050613737816132ee565b92915050565b5f60208284031215613752576137516132af565b5b5f61375f84828501613729565b91505092915050565b5f60408201905061377b5f8301856134a7565b61378860208301846131aa565b9392505050565b5f8151905061379d8161354b565b92915050565b5f602082840312156137b8576137b76132af565b5b5f6137c58482850161378f565b91505092915050565b5f6040820190506137e15f8301856131aa565b6137ee6020830184613287565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61384f6026836131dc565b915061385a826137f5565b604082019050919050565b5f6020820190508181035f83015261387c81613843565b9050919050565b5f61388d826131a1565b9150613898836131a1565b92508282039050818111156138b0576138af61365e565b5b92915050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f6138ea6014836131dc565b91506138f5826138b6565b602082019050919050565b5f6020820190508181035f830152613917816138de565b9050919050565b5f613928826131a1565b9150613933836131a1565b925082820190508082111561394b5761394a61365e565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d69745f8201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b5f6139ab603e836131dc565b91506139b682613951565b604082019050919050565b5f6020820190508181035f8301526139d88161399f565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a396021836131dc565b9150613a44826139df565b604082019050919050565b5f6020820190508181035f830152613a6681613a2d565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f613aa16011836131dc565b9150613aac82613a6d565b602082019050919050565b5f6020820190508181035f830152613ace81613a95565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613b52613b4d613b4884613b2f565b61312d565b6131a1565b9050919050565b613b6281613b38565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b9a816132b3565b82525050565b5f613bab8383613b91565b60208301905092915050565b5f602082019050919050565b5f613bcd82613b68565b613bd78185613b72565b9350613be283613b82565b805f5b83811015613c12578151613bf98882613ba0565b9750613c0483613bb7565b925050600181019050613be5565b5085935050505092915050565b5f60a082019050613c325f8301886131aa565b613c3f6020830187613b59565b8181036040830152613c518186613bc3565b9050613c6060608301856134a7565b613c6d60808301846131aa565b9695505050505050565b5f81905092915050565b50565b5f613c8f5f83613c77565b9150613c9a82613c81565b5f82019050919050565b5f613cae82613c84565b9150819050919050565b5f60c082019050613ccb5f8301896134a7565b613cd860208301886131aa565b613ce56040830187613b59565b613cf26060830186613b59565b613cff60808301856134a7565b613d0c60a08301846131aa565b979650505050505050565b5f805f60608486031215613d2e57613d2d6132af565b5b5f613d3b86828701613729565b9350506020613d4c86828701613729565b9250506040613d5d86828701613729565b9150509250925092565b5f604082019050613d7a5f8301856131aa565b613d8760208301846131aa565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613dc2601b836131dc565b9150613dcd82613d8e565b602082019050919050565b5f6020820190508181035f830152613def81613db6565b905091905056fea264697066735822122070aeaabfbbff31e704d8b3bfe99d10ad30151c7486abd3ef239db19ebd2dd29d64736f6c63430008150033

Deployed Bytecode Sourcemap

11910:12791:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11988:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13386:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15817:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13311:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16035:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15213:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12869:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16781:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24179:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15307:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23495:533;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24347:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15905:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16423:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13349:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15567:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9069:145;;;;;;;;;;;;;:::i;:::-;;21209:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16660:113;;;;;;;;;;;;;:::i;:::-;;20861:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12530:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12463:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15483:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8855:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15393:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12025:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16259:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8232:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15678:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24036:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24487:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8606:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20740:113;;;;;;;;;;;;;:::i;:::-;;11988:30;;;;;;;;;;;;;:::o;13386:54::-;;;;:::o;15817:80::-;15865:13;15889:5;;;;;;;;;;;;;;;;;15882:12;;15817:80;:::o;13311:31::-;;;;;;;;;;;;;:::o;16035:216::-;16110:4;16162:6;16127:11;:23;16139:10;16127:23;;;;;;;;;;;;;;;:32;16151:7;16127:32;;;;;;;;;;;;;;;:41;;;;16205:7;16184:37;;16193:10;16184:37;;;16214:6;16184:37;;;;;;:::i;:::-;;;;;;;;16239:4;16232:11;;16035:216;;;;:::o;15213:88::-;15268:7;15286:12;;15279:19;;15213:88;:::o;12869:93::-;;;;:::o;16781:370::-;16881:4;16936:17;16901:11;:19;16913:6;16901:19;;;;;;;;;;;;;;;:31;16921:10;16901:31;;;;;;;;;;;;;;;;:52;16898:186;;17003:69;17039:6;17003:69;;;;;;;;;;;;;;;;;:11;:19;17015:6;17003:19;;;;;;;;;;;;;;;:31;17023:10;17003:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;16969:11;:19;16981:6;16969:19;;;;;;;;;;;;;;;:31;16989:10;16969:31;;;;;;;;;;;;;;;:103;;;;16898:186;17103:40;17117:6;17125:9;17136:6;17103:13;:40::i;:::-;17096:47;;16781:370;;;;;:::o;24179:156::-;24239:7;24266:61;24314:12;:10;:12::i;:::-;24266:43;24279:29;24306:1;24279:22;24289:11;;;;;;;;;;;24279:9;:22::i;:::-;:26;;:29;;;;:::i;:::-;24266:8;:12;;:43;;;;:::i;:::-;:47;;:61;;;;:::i;:::-;24259:68;;24179:156;;;:::o;15307:80::-;15359:5;12177:2;15368:16;;15307:80;:::o;23495:533::-;8992:12;:10;:12::i;:::-;8982:22;;:6;;;;;;;;;;:22;;;8974:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23713:22:::1;23689:21;;:46;;;;;;;;;;;;;;;;;;23764:16;23746:15;;:34;;;;;;;;;;;;;;;;;;23808:15;23791:14;;:32;;;;;;;;;;;;;;;;;;23852:16;23834:15;;:34;;;;;;;;;;;;;;;;;;23900:19;23879:18;;:40;;;;;;;;;;;;;;;;;;23937:83;23951:15;;;;;;;;;;;23968:18;;;;;;;;;;;23988:15;;;;;;;;;;;24005:14;;;;;;;;;;;23937:83;;;;;;;;;:::i;:::-;;;;;;;;23495:533:::0;;;;;:::o;24347:132::-;24390:7;24417:54;24455:15;12346:42;24455:9;:15::i;:::-;24417:33;24434:15;12273:42;24434:9;:15::i;:::-;24417:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;24410:61;;24347:132;:::o;15905:122::-;15960:4;15984:35;15992:7;16001:17;15984:7;:35::i;:::-;15977:42;;15905:122;;;:::o;16423:229::-;8992:12;:10;:12::i;:::-;8982:22;;:6;;;;;;;;;;:22;;;8974:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16527:1:::1;16509:14;:19;;16501:28;;;::::0;::::1;;16594:4;16575:14;16560:12;;:29;;;;:::i;:::-;16559:39;;;;:::i;:::-;16541:15;:57;;;;16614:30;16628:15;;16614:30;;;;;;:::i;:::-;;;;;;;;16423:229:::0;:::o;13349:30::-;;;;;;;;;;;;;:::o;15567:105::-;15633:7;15651:9;:18;15661:7;15651:18;;;;;;;;;;;;;;;;15644:25;;15567:105;;;:::o;9069:145::-;8992:12;:10;:12::i;:::-;8982:22;;:6;;;;;;;;;;:22;;;8974:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9173:1:::1;9139:37;;9157:6;::::0;::::1;;;;;;;;9139:37;;;;;;;;;;;;9204:1;9187:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;9069:145::o:0;21209:167::-;8992:12;:10;:12::i;:::-;8982:22;;:6;;;;;;;;;;:22;;;8974:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21288:5:::1;21274:11;;:19;;;;;;;;;;;;;;;;;;21335:4;21304:15;:28;21320:11;;;;;;;;;;;21304:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;21364:4;21350:11;;:18;;;;;;;;;;;;;;;;;;21209:167:::0;:::o;16660:113::-;8992:12;:10;:12::i;:::-;8982:22;;:6;;;;;;;;;;:22;;;8974:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12217:4:::1;16715:12;:18;;;;12217:4;16744:15;:21;;;;16660:113::o:0;20861:340::-;20942:12;20985:1;20975:6;:11;20972:96;;21018:12;21011:30;;;21050:4;21011:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21002:54;;20972:96;21083:32;21094:12;21108:6;21083:32;;;;;;;:::i;:::-;;;;;;;;21140:12;21133:29;;;21163:21;;;;;;;;;;;21186:6;21133:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21126:67;;20861:340;;;;:::o;12530:63::-;;;;:::o;12463:60::-;;;;:::o;15483:78::-;15535:7;15552;:5;:7::i;:::-;15545:14;;15483:78;:::o;8855:79::-;8893:7;8920:6;;;;;;;;;;;8913:13;;8855:79;:::o;15393:84::-;15443:13;15467:7;;;;;;;;;;;;;;;;;15460:14;;15393:84;:::o;12025:26::-;;;;;;;;;;;;;:::o;16259:156::-;16339:4;16363:44;16377:10;16389:9;16400:6;16363:13;:44::i;:::-;16356:51;;16259:156;;;;:::o;8232:21::-;;;;;;;;;;;;:::o;15678:133::-;15762:7;15780:11;:19;15792:6;15780:19;;;;;;;;;;;;;;;:28;15800:7;15780:28;;;;;;;;;;;;;;;;15773:35;;15678:133;;;;:::o;24036:135::-;24110:4;24158:5;24134:21;24146:8;24134:11;:21::i;:::-;:29;24127:36;;24036:135;;;;:::o;24487:211::-;8992:12;:10;:12::i;:::-;8982:22;;:6;;;;;;;;;;:22;;;8974:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24592:8:::1;24578:11;;:22;;;;;;;;;;;;;;;;;;24627:7;24611:13;:23;;;;24650:40;24663:13;;24678:11;;;;;;;;;;;24650:40;;;;;;;:::i;:::-;;;;;;;;24487:211:::0;;:::o;8606:241::-;8992:12;:10;:12::i;:::-;8982:22;;:6;;;;;;;;;;:22;;;8974:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8715:1:::1;8695:22;;:8;:22;;::::0;8687:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8802:8;8776:35;;8794:6;::::0;::::1;;;;;;;;8776:35;;;;;;;;;;;;8831:8;8822:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;8606:241:::0;:::o;20740:113::-;20791:21;;;;;;;;;;;20783:39;;:62;20823:21;20783:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20740:113::o;10913:192::-;10999:7;11032:1;11027;:6;;11035:12;11019:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11059:9;11075:1;11071;:5;;;;:::i;:::-;11059:17;;11096:1;11089:8;;;10913:192;;;;;:::o;17159:1354::-;17251:4;17271:6;;;;;;;;;;;17268:63;;;17287:41;17302:6;17310:9;17321:6;17287:14;:41::i;:::-;17280:48;;;;17268:63;17347:14;:22;17362:6;17347:22;;;;;;;;;;;;;;;;;;;;;;;;;17346:23;:53;;;;;17374:14;:25;17389:9;17374:25;;;;;;;;;;;;;;;;;;;;;;;;;17373:26;17346:53;17343:127;;;17423:11;;;;;;;;;;;17415:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;17343:127;17485:12;:20;17498:6;17485:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;17509:12;:23;17522:9;17509:23;;;;;;;;;;;;;;;;;;;;;;;;;17485:47;17482:127;;;17556:41;17571:6;17579:9;17590:6;17556:14;:41::i;:::-;17549:48;;;;17482:127;17626:14;:22;17641:6;17626:22;;;;;;;;;;;;;;;;;;;;;;;;;17625:23;:53;;;;;17673:4;17652:26;;:9;:26;;;;17625:53;:84;;;;;12273:42;17683:26;;:9;:26;;;;17625:84;:112;;;;;17726:11;;;;;;;;;;;17713:24;;:9;:24;;;;17625:112;:144;;;;;17754:15;;;;;;;;;;;17741:28;;:9;:28;;;;17625:144;:176;;;;;17786:15;;;;;;;;;;;17773:28;;:9;:28;;;;17625:176;:207;;;;;17806:15;:26;17822:9;17806:26;;;;;;;;;;;;;;;;;;;;;;;;;17805:27;17625:207;17621:409;;;17848:18;17869:20;17879:9;17869;:20::i;:::-;17848:41;;17937:15;;17926:6;17913:10;:19;;;;:::i;:::-;17912:40;;17904:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;17833:197;17621:409;18042:28;18055:6;18063;18042:12;:28::i;:::-;18086:16;:14;:16::i;:::-;18083:43;;;18105:18;:16;:18::i;:::-;18083:43;18156:53;18178:6;18156:53;;;;;;;;;;;;;;;;;:9;:17;18166:6;18156:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;18136:9;:17;18146:6;18136:17;;;;;;;;;;;;;;;:73;;;;18222:22;18248:12;:20;18261:6;18248:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;18272:12;:23;18285:9;18272:23;;;;;;;;;;;;;;;;;;;;;;;;;18248:47;18247:101;;18308:40;18322:6;18330;18338:9;18308:13;:40::i;:::-;18247:101;;;18299:6;18247:101;18222:126;;18382:40;18407:14;18382:9;:20;18392:9;18382:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;18359:9;:20;18369:9;18359:20;;;;;;;;;;;;;;;:63;;;;18457:9;18440:43;;18449:6;18440:43;;;18468:14;18440:43;;;;;;:::i;:::-;;;;;;;;18501:4;18494:11;;;17159:1354;;;;;;:::o;11253:250::-;11311:7;11340:1;11335;:6;11331:47;;11365:1;11358:8;;;;11331:47;11390:9;11406:1;11402;:5;;;;:::i;:::-;11390:17;;11435:1;11430;11426;:5;;;;:::i;:::-;:10;11418:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11494:1;11487:8;;;11253:250;;;;;:::o;11704:132::-;11762:7;11789:39;11793:1;11796;11789:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;11782:46;;11704:132;;;;:::o;7953:115::-;8006:15;8049:10;8034:26;;7953:115;:::o;11111:136::-;11169:7;11196:43;11200:1;11203;11196:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;11189:50;;11111:136;;;;:::o;18521:423::-;18614:4;18621:14;18638:33;18653:6;18661:9;18638:14;:33::i;:::-;:75;;18707:6;18638:75;;;18684:19;18701:1;18684:12;;:16;;:19;;;;:::i;:::-;18674:6;:30;;;;:::i;:::-;18638:75;18621:92;;18744:53;18766:6;18744:53;;;;;;;;;;;;;;;;;:9;:17;18754:6;18744:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;18724:9;:17;18734:6;18724:17;;;;;;;;;;;;;;;:73;;;;18831:32;18856:6;18831:9;:20;18841:9;18831:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;18808:9;:20;18818:9;18808:20;;;;;;;;;;;;;;;:55;;;;18896:9;18879:35;;18888:6;18879:35;;;18907:6;18879:35;;;;;;:::i;:::-;;;;;;;;18932:4;18925:11;;;18521:423;;;;;:::o;18952:166::-;19049:12;;19039:6;:22;;:49;;;;19065:15;:23;19081:6;19065:23;;;;;;;;;;;;;;;;;;;;;;;;;19039:49;19031:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;18952:166;;:::o;20303:204::-;20352:4;20390:11;;;;;;;;;;;20376:25;;:10;:25;;;;:45;;;;;20415:6;;;;;;;;;;;20414:7;20376:45;:69;;;;;20434:11;;;;;;;;;;;20376:69;:123;;;;;20486:13;;20458:9;:24;20476:4;20458:24;;;;;;;;;;;;;;;;:41;;20376:123;20369:130;;20303:204;:::o;21384:1861::-;13499:4;13490:6;;:13;;;;;;;;;;;;;;;;;;21441:27:::1;21471:41;21482:8;;21492:19;;21471:10;:41::i;:::-;:60;;21519:12;;21471:60;;;21515:1;21471:60;21441:90;;21542:23;21568:59;21625:1;21568:52;21611:8;;21568:38;21586:19;21568:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;21542:85;;21638:20;21661:34;21679:15;21661:13;;:17;;:34;;;;:::i;:::-;21638:57;;21708:21;21746:1;21732:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21708:40;;21777:4;21759;21764:1;21759:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;21803:4;;;;;;;;;;;21793;21798:1;21793:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;21820:21;21844;21820:45;;21878:8;;;;;;;;;;;:59;;;21952:12;21979:1;21995:4;22022;22042:15;21878:190;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22081:17;22101:40;22127:13;22101:21;:25;;:40;;;;:::i;:::-;22081:60;;22154:19;22176:40;22189:26;22213:1;22189:19;:23;;:26;;;;:::i;:::-;22176:8;;:12;;:40;;;;:::i;:::-;22154:62;;22237:26;22266:58;22322:1;22266:51;22305:11;22266:34;22280:19;22266:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;22237:87;;22335:26;22364:44;22396:11;22364:27;22378:12;;22364:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;22335:73;;22419:24;22446:42;22476:11;22446:25;22460:10;;22446:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;22419:69;;22499:20;22522:38;22548:11;22522:21;22536:6;;22522:9;:13;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;22499:61;;22574:15;22602;;;;;;;;;;;22594:29;;22631:18;22594:60;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22573:81;;;22689:14;;;;;;;;;;;22681:28;;22717:12;22681:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22665:69;;;;;22769:18;;;;;;;;;;;22761:32;;22801:16;22761:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22745:77;;;;;22856:5;22843:18;;22895:1;22877:15;:19;22874:364;;;22912:8;;;;;;;;;;;:24;;;22944:18;22990:4;23014:15;23048:1;23068::::0;23088:21:::1;;;;;;;;;;;23128:15;22912:246;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23178:48;23190:18;23210:15;23178:48;;;;;;;:::i;:::-;;;;;;;;22874:364;21430:1815;;;;;;;;;;;;13517:5:::0;13508:6;;:14;;;;;;;;;;;;;;;;;;21384:1861::o;19249:1046::-;19341:7;19361:15;19379;;19361:33;;19405:20;19456:11;;;;;;;;;;;19443:24;;:9;:24;;;19440:200;;19494:11;;19484:21;;19523:26;19533:15;;;;;;;;;;;19523:9;:26::i;:::-;19507:42;;;;;:::i;:::-;;;19440:200;;;19580:11;;;;;;;;;;;19570:21;;:6;:21;;;19567:73;;19618:10;;19608:20;;19567:73;19440:200;19650:17;19670:56;19722:3;19708:11;;:17;;;;:::i;:::-;19670:33;19695:7;19670:20;19681:8;;19670:6;:10;;:20;;;;:::i;:::-;:24;;:33;;;;:::i;:::-;:37;;:56;;;;:::i;:::-;19650:76;;19737:18;19758:36;19785:8;;19758:22;19772:7;;19758:9;:13;;:22;;;;:::i;:::-;:26;;:36;;;;:::i;:::-;19737:57;;19805:22;19830:25;19844:10;19830:9;:13;;:25;;;;:::i;:::-;19805:50;;19893:44;19922:14;19893:9;:24;19911:4;19893:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;19866:9;:24;19884:4;19866:24;;;;;;;;;;;;;;;:71;;;;19977:42;20008:10;19977:9;:26;19987:15;;;;;;;;;;;19977:26;;;;;;;;;;;;;;;;:30;;:42;;;;:::i;:::-;19948:9;:26;19958:15;;;;;;;;;;;19948:26;;;;;;;;;;;;;;;:71;;;;20060:4;20035:47;;20044:6;20035:47;;;20067:14;20035:47;;;;;;:::i;:::-;;;;;;;;20119:1;20106:10;:14;20103:144;;;20151:28;20168:10;20151:12;;:16;;:28;;;;:::i;:::-;20136:12;:43;;;;12346:42;20199:34;;20208:6;20199:34;;;20222:10;20199:34;;;;;;:::i;:::-;;;;;;;;20103:144;20266:21;20277:9;20266:6;:10;;:21;;;;:::i;:::-;20259:28;;;;;;;19249:1046;;;;;:::o;10726:181::-;10784:7;10804:9;10820:1;10816;:5;;;;:::i;:::-;10804:17;;10845:1;10840;:6;;10832:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10898:1;10891:8;;;10726:181;;;;:::o;11509:189::-;11595:7;11627:1;11623;:5;11630:12;11615:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11654:9;11670:1;11666;:5;;;;:::i;:::-;11654:17;;11689:1;11682:8;;;11509:189;;;;;:::o;20515:217::-;20597:4;20634:11;;;;;;;;;;;20621:24;;:9;:24;;;:53;;;;;20659:15;;;;;;;;;;;20649:25;;:6;:25;;;20621:53;:77;;;;;20696:1;20678:20;;:6;:20;;;;20621:77;:103;;;;;20722:1;20702:22;;:9;:22;;;;20621:103;20614:110;;20515:217;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:60::-;167:3;188:5;181:12;;139:60;;;:::o;205:142::-;255:9;288:53;306:34;315:24;333:5;315:24;:::i;:::-;306:34;:::i;:::-;288:53;:::i;:::-;275:66;;205:142;;;:::o;353:126::-;403:9;436:37;467:5;436:37;:::i;:::-;423:50;;353:126;;;:::o;485:148::-;557:9;590:37;621:5;590:37;:::i;:::-;577:50;;485:148;;;:::o;639:175::-;748:59;801:5;748:59;:::i;:::-;743:3;736:72;639:175;;:::o;820:266::-;935:4;973:2;962:9;958:18;950:26;;986:93;1076:1;1065:9;1061:17;1052:6;986:93;:::i;:::-;820:266;;;;:::o;1092:77::-;1129:7;1158:5;1147:16;;1092:77;;;:::o;1175:118::-;1262:24;1280:5;1262:24;:::i;:::-;1257:3;1250:37;1175:118;;:::o;1299:222::-;1392:4;1430:2;1419:9;1415:18;1407:26;;1443:71;1511:1;1500:9;1496:17;1487:6;1443:71;:::i;:::-;1299:222;;;;:::o;1527:99::-;1579:6;1613:5;1607:12;1597:22;;1527:99;;;:::o;1632:169::-;1716:11;1750:6;1745:3;1738:19;1790:4;1785:3;1781:14;1766:29;;1632:169;;;;:::o;1807:246::-;1888:1;1898:113;1912:6;1909:1;1906:13;1898:113;;;1997:1;1992:3;1988:11;1982:18;1978:1;1973:3;1969:11;1962:39;1934:2;1931:1;1927:10;1922:15;;1898:113;;;2045:1;2036:6;2031:3;2027:16;2020:27;1869:184;1807:246;;;:::o;2059:102::-;2100:6;2151:2;2147:7;2142:2;2135:5;2131:14;2127:28;2117:38;;2059:102;;;:::o;2167:377::-;2255:3;2283:39;2316:5;2283:39;:::i;:::-;2338:71;2402:6;2397:3;2338:71;:::i;:::-;2331:78;;2418:65;2476:6;2471:3;2464:4;2457:5;2453:16;2418:65;:::i;:::-;2508:29;2530:6;2508:29;:::i;:::-;2503:3;2499:39;2492:46;;2259:285;2167:377;;;;:::o;2550:313::-;2663:4;2701:2;2690:9;2686:18;2678:26;;2750:9;2744:4;2740:20;2736:1;2725:9;2721:17;2714:47;2778:78;2851:4;2842:6;2778:78;:::i;:::-;2770:86;;2550:313;;;;:::o;2869:90::-;2903:7;2946:5;2939:13;2932:21;2921:32;;2869:90;;;:::o;2965:109::-;3046:21;3061:5;3046:21;:::i;:::-;3041:3;3034:34;2965:109;;:::o;3080:210::-;3167:4;3205:2;3194:9;3190:18;3182:26;;3218:65;3280:1;3269:9;3265:17;3256:6;3218:65;:::i;:::-;3080:210;;;;:::o;3377:117::-;3486:1;3483;3476:12;3623:96;3660:7;3689:24;3707:5;3689:24;:::i;:::-;3678:35;;3623:96;;;:::o;3725:122::-;3798:24;3816:5;3798:24;:::i;:::-;3791:5;3788:35;3778:63;;3837:1;3834;3827:12;3778:63;3725:122;:::o;3853:139::-;3899:5;3937:6;3924:20;3915:29;;3953:33;3980:5;3953:33;:::i;:::-;3853:139;;;;:::o;3998:122::-;4071:24;4089:5;4071:24;:::i;:::-;4064:5;4061:35;4051:63;;4110:1;4107;4100:12;4051:63;3998:122;:::o;4126:139::-;4172:5;4210:6;4197:20;4188:29;;4226:33;4253:5;4226:33;:::i;:::-;4126:139;;;;:::o;4271:474::-;4339:6;4347;4396:2;4384:9;4375:7;4371:23;4367:32;4364:119;;;4402:79;;:::i;:::-;4364:119;4522:1;4547:53;4592:7;4583:6;4572:9;4568:22;4547:53;:::i;:::-;4537:63;;4493:117;4649:2;4675:53;4720:7;4711:6;4700:9;4696:22;4675:53;:::i;:::-;4665:63;;4620:118;4271:474;;;;;:::o;4751:619::-;4828:6;4836;4844;4893:2;4881:9;4872:7;4868:23;4864:32;4861:119;;;4899:79;;:::i;:::-;4861:119;5019:1;5044:53;5089:7;5080:6;5069:9;5065:22;5044:53;:::i;:::-;5034:63;;4990:117;5146:2;5172:53;5217:7;5208:6;5197:9;5193:22;5172:53;:::i;:::-;5162:63;;5117:118;5274:2;5300:53;5345:7;5336:6;5325:9;5321:22;5300:53;:::i;:::-;5290:63;;5245:118;4751:619;;;;;:::o;5376:329::-;5435:6;5484:2;5472:9;5463:7;5459:23;5455:32;5452:119;;;5490:79;;:::i;:::-;5452:119;5610:1;5635:53;5680:7;5671:6;5660:9;5656:22;5635:53;:::i;:::-;5625:63;;5581:117;5376:329;;;;:::o;5711:86::-;5746:7;5786:4;5779:5;5775:16;5764:27;;5711:86;;;:::o;5803:112::-;5886:22;5902:5;5886:22;:::i;:::-;5881:3;5874:35;5803:112;;:::o;5921:214::-;6010:4;6048:2;6037:9;6033:18;6025:26;;6061:67;6125:1;6114:9;6110:17;6101:6;6061:67;:::i;:::-;5921:214;;;;:::o;6141:911::-;6236:6;6244;6252;6260;6268;6317:3;6305:9;6296:7;6292:23;6288:33;6285:120;;;6324:79;;:::i;:::-;6285:120;6444:1;6469:53;6514:7;6505:6;6494:9;6490:22;6469:53;:::i;:::-;6459:63;;6415:117;6571:2;6597:53;6642:7;6633:6;6622:9;6618:22;6597:53;:::i;:::-;6587:63;;6542:118;6699:2;6725:53;6770:7;6761:6;6750:9;6746:22;6725:53;:::i;:::-;6715:63;;6670:118;6827:2;6853:53;6898:7;6889:6;6878:9;6874:22;6853:53;:::i;:::-;6843:63;;6798:118;6955:3;6982:53;7027:7;7018:6;7007:9;7003:22;6982:53;:::i;:::-;6972:63;;6926:119;6141:911;;;;;;;;:::o;7058:329::-;7117:6;7166:2;7154:9;7145:7;7141:23;7137:32;7134:119;;;7172:79;;:::i;:::-;7134:119;7292:1;7317:53;7362:7;7353:6;7342:9;7338:22;7317:53;:::i;:::-;7307:63;;7263:117;7058:329;;;;:::o;7393:118::-;7480:24;7498:5;7480:24;:::i;:::-;7475:3;7468:37;7393:118;;:::o;7517:222::-;7610:4;7648:2;7637:9;7633:18;7625:26;;7661:71;7729:1;7718:9;7714:17;7705:6;7661:71;:::i;:::-;7517:222;;;;:::o;7745:474::-;7813:6;7821;7870:2;7858:9;7849:7;7845:23;7841:32;7838:119;;;7876:79;;:::i;:::-;7838:119;7996:1;8021:53;8066:7;8057:6;8046:9;8042:22;8021:53;:::i;:::-;8011:63;;7967:117;8123:2;8149:53;8194:7;8185:6;8174:9;8170:22;8149:53;:::i;:::-;8139:63;;8094:118;7745:474;;;;;:::o;8225:::-;8293:6;8301;8350:2;8338:9;8329:7;8325:23;8321:32;8318:119;;;8356:79;;:::i;:::-;8318:119;8476:1;8501:53;8546:7;8537:6;8526:9;8522:22;8501:53;:::i;:::-;8491:63;;8447:117;8603:2;8629:53;8674:7;8665:6;8654:9;8650:22;8629:53;:::i;:::-;8619:63;;8574:118;8225:474;;;;;:::o;8705:116::-;8775:21;8790:5;8775:21;:::i;:::-;8768:5;8765:32;8755:60;;8811:1;8808;8801:12;8755:60;8705:116;:::o;8827:133::-;8870:5;8908:6;8895:20;8886:29;;8924:30;8948:5;8924:30;:::i;:::-;8827:133;;;;:::o;8966:468::-;9031:6;9039;9088:2;9076:9;9067:7;9063:23;9059:32;9056:119;;;9094:79;;:::i;:::-;9056:119;9214:1;9239:50;9281:7;9272:6;9261:9;9257:22;9239:50;:::i;:::-;9229:60;;9185:114;9338:2;9364:53;9409:7;9400:6;9389:9;9385:22;9364:53;:::i;:::-;9354:63;;9309:118;8966:468;;;;;:::o;9440:182::-;9580:34;9576:1;9568:6;9564:14;9557:58;9440:182;:::o;9628:366::-;9770:3;9791:67;9855:2;9850:3;9791:67;:::i;:::-;9784:74;;9867:93;9956:3;9867:93;:::i;:::-;9985:2;9980:3;9976:12;9969:19;;9628:366;;;:::o;10000:419::-;10166:4;10204:2;10193:9;10189:18;10181:26;;10253:9;10247:4;10243:20;10239:1;10228:9;10224:17;10217:47;10281:131;10407:4;10281:131;:::i;:::-;10273:139;;10000:419;;;:::o;10425:553::-;10602:4;10640:3;10629:9;10625:19;10617:27;;10654:71;10722:1;10711:9;10707:17;10698:6;10654:71;:::i;:::-;10735:72;10803:2;10792:9;10788:18;10779:6;10735:72;:::i;:::-;10817;10885:2;10874:9;10870:18;10861:6;10817:72;:::i;:::-;10899;10967:2;10956:9;10952:18;10943:6;10899:72;:::i;:::-;10425:553;;;;;;;:::o;10984:180::-;11032:77;11029:1;11022:88;11129:4;11126:1;11119:15;11153:4;11150:1;11143:15;11170:410;11210:7;11233:20;11251:1;11233:20;:::i;:::-;11228:25;;11267:20;11285:1;11267:20;:::i;:::-;11262:25;;11322:1;11319;11315:9;11344:30;11362:11;11344:30;:::i;:::-;11333:41;;11523:1;11514:7;11510:15;11507:1;11504:22;11484:1;11477:9;11457:83;11434:139;;11553:18;;:::i;:::-;11434:139;11218:362;11170:410;;;;:::o;11586:180::-;11634:77;11631:1;11624:88;11731:4;11728:1;11721:15;11755:4;11752:1;11745:15;11772:185;11812:1;11829:20;11847:1;11829:20;:::i;:::-;11824:25;;11863:20;11881:1;11863:20;:::i;:::-;11858:25;;11902:1;11892:35;;11907:18;;:::i;:::-;11892:35;11949:1;11946;11942:9;11937:14;;11772:185;;;;:::o;11963:143::-;12020:5;12051:6;12045:13;12036:22;;12067:33;12094:5;12067:33;:::i;:::-;11963:143;;;;:::o;12112:351::-;12182:6;12231:2;12219:9;12210:7;12206:23;12202:32;12199:119;;;12237:79;;:::i;:::-;12199:119;12357:1;12382:64;12438:7;12429:6;12418:9;12414:22;12382:64;:::i;:::-;12372:74;;12328:128;12112:351;;;;:::o;12469:332::-;12590:4;12628:2;12617:9;12613:18;12605:26;;12641:71;12709:1;12698:9;12694:17;12685:6;12641:71;:::i;:::-;12722:72;12790:2;12779:9;12775:18;12766:6;12722:72;:::i;:::-;12469:332;;;;;:::o;12807:137::-;12861:5;12892:6;12886:13;12877:22;;12908:30;12932:5;12908:30;:::i;:::-;12807:137;;;;:::o;12950:345::-;13017:6;13066:2;13054:9;13045:7;13041:23;13037:32;13034:119;;;13072:79;;:::i;:::-;13034:119;13192:1;13217:61;13270:7;13261:6;13250:9;13246:22;13217:61;:::i;:::-;13207:71;;13163:125;12950:345;;;;:::o;13301:320::-;13416:4;13454:2;13443:9;13439:18;13431:26;;13467:71;13535:1;13524:9;13520:17;13511:6;13467:71;:::i;:::-;13548:66;13610:2;13599:9;13595:18;13586:6;13548:66;:::i;:::-;13301:320;;;;;:::o;13627:225::-;13767:34;13763:1;13755:6;13751:14;13744:58;13836:8;13831:2;13823:6;13819:15;13812:33;13627:225;:::o;13858:366::-;14000:3;14021:67;14085:2;14080:3;14021:67;:::i;:::-;14014:74;;14097:93;14186:3;14097:93;:::i;:::-;14215:2;14210:3;14206:12;14199:19;;13858:366;;;:::o;14230:419::-;14396:4;14434:2;14423:9;14419:18;14411:26;;14483:9;14477:4;14473:20;14469:1;14458:9;14454:17;14447:47;14511:131;14637:4;14511:131;:::i;:::-;14503:139;;14230:419;;;:::o;14655:194::-;14695:4;14715:20;14733:1;14715:20;:::i;:::-;14710:25;;14749:20;14767:1;14749:20;:::i;:::-;14744:25;;14793:1;14790;14786:9;14778:17;;14817:1;14811:4;14808:11;14805:37;;;14822:18;;:::i;:::-;14805:37;14655:194;;;;:::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:191::-;15868:3;15887:20;15905:1;15887:20;:::i;:::-;15882:25;;15921:20;15939:1;15921:20;:::i;:::-;15916:25;;15964:1;15961;15957:9;15950:16;;15985:3;15982:1;15979:10;15976:36;;;15992:18;;:::i;:::-;15976:36;15828:191;;;;:::o;16025:249::-;16165:34;16161:1;16153:6;16149:14;16142:58;16234:32;16229:2;16221:6;16217:15;16210:57;16025:249;:::o;16280:366::-;16422:3;16443:67;16507:2;16502:3;16443:67;:::i;:::-;16436:74;;16519:93;16608:3;16519:93;:::i;:::-;16637:2;16632:3;16628:12;16621:19;;16280:366;;;:::o;16652:419::-;16818:4;16856:2;16845:9;16841:18;16833:26;;16905:9;16899:4;16895:20;16891:1;16880:9;16876:17;16869:47;16933:131;17059:4;16933:131;:::i;:::-;16925:139;;16652:419;;;:::o;17077:220::-;17217:34;17213:1;17205:6;17201:14;17194:58;17286:3;17281:2;17273:6;17269:15;17262:28;17077:220;:::o;17303:366::-;17445:3;17466:67;17530:2;17525:3;17466:67;:::i;:::-;17459:74;;17542:93;17631:3;17542:93;:::i;:::-;17660:2;17655:3;17651:12;17644:19;;17303:366;;;:::o;17675:419::-;17841:4;17879:2;17868:9;17864:18;17856:26;;17928:9;17922:4;17918:20;17914:1;17903:9;17899:17;17892:47;17956:131;18082:4;17956:131;:::i;:::-;17948:139;;17675:419;;;:::o;18100:167::-;18240:19;18236:1;18228:6;18224:14;18217:43;18100:167;:::o;18273:366::-;18415:3;18436:67;18500:2;18495:3;18436:67;:::i;:::-;18429:74;;18512:93;18601:3;18512:93;:::i;:::-;18630:2;18625:3;18621:12;18614:19;;18273:366;;;:::o;18645:419::-;18811:4;18849:2;18838:9;18834:18;18826:26;;18898:9;18892:4;18888:20;18884:1;18873:9;18869:17;18862:47;18926:131;19052:4;18926:131;:::i;:::-;18918:139;;18645:419;;;:::o;19070:180::-;19118:77;19115:1;19108:88;19215:4;19212:1;19205:15;19239:4;19236:1;19229:15;19256:180;19304:77;19301:1;19294:88;19401:4;19398:1;19391:15;19425:4;19422:1;19415:15;19442:85;19487:7;19516:5;19505:16;;19442:85;;;:::o;19533:158::-;19591:9;19624:61;19642:42;19651:32;19677:5;19651:32;:::i;:::-;19642:42;:::i;:::-;19624:61;:::i;:::-;19611:74;;19533:158;;;:::o;19697:147::-;19792:45;19831:5;19792:45;:::i;:::-;19787:3;19780:58;19697:147;;:::o;19850:114::-;19917:6;19951:5;19945:12;19935:22;;19850:114;;;:::o;19970:184::-;20069:11;20103:6;20098:3;20091:19;20143:4;20138:3;20134:14;20119:29;;19970:184;;;;:::o;20160:132::-;20227:4;20250:3;20242:11;;20280:4;20275:3;20271:14;20263:22;;20160:132;;;:::o;20298:108::-;20375:24;20393:5;20375:24;:::i;:::-;20370:3;20363:37;20298:108;;:::o;20412:179::-;20481:10;20502:46;20544:3;20536:6;20502:46;:::i;:::-;20580:4;20575:3;20571:14;20557:28;;20412:179;;;;:::o;20597:113::-;20667:4;20699;20694:3;20690:14;20682:22;;20597:113;;;:::o;20746:732::-;20865:3;20894:54;20942:5;20894:54;:::i;:::-;20964:86;21043:6;21038:3;20964:86;:::i;:::-;20957:93;;21074:56;21124:5;21074:56;:::i;:::-;21153:7;21184:1;21169:284;21194:6;21191:1;21188:13;21169:284;;;21270:6;21264:13;21297:63;21356:3;21341:13;21297:63;:::i;:::-;21290:70;;21383:60;21436:6;21383:60;:::i;:::-;21373:70;;21229:224;21216:1;21213;21209:9;21204:14;;21169:284;;;21173:14;21469:3;21462:10;;20870:608;;;20746:732;;;;:::o;21484:831::-;21747:4;21785:3;21774:9;21770:19;21762:27;;21799:71;21867:1;21856:9;21852:17;21843:6;21799:71;:::i;:::-;21880:80;21956:2;21945:9;21941:18;21932:6;21880:80;:::i;:::-;22007:9;22001:4;21997:20;21992:2;21981:9;21977:18;21970:48;22035:108;22138:4;22129:6;22035:108;:::i;:::-;22027:116;;22153:72;22221:2;22210:9;22206:18;22197:6;22153:72;:::i;:::-;22235:73;22303:3;22292:9;22288:19;22279:6;22235:73;:::i;:::-;21484:831;;;;;;;;:::o;22321:147::-;22422:11;22459:3;22444:18;;22321:147;;;;:::o;22474:114::-;;:::o;22594:398::-;22753:3;22774:83;22855:1;22850:3;22774:83;:::i;:::-;22767:90;;22866:93;22955:3;22866:93;:::i;:::-;22984:1;22979:3;22975:11;22968:18;;22594:398;;;:::o;22998:379::-;23182:3;23204:147;23347:3;23204:147;:::i;:::-;23197:154;;23368:3;23361:10;;22998:379;;;:::o;23383:807::-;23632:4;23670:3;23659:9;23655:19;23647:27;;23684:71;23752:1;23741:9;23737:17;23728:6;23684:71;:::i;:::-;23765:72;23833:2;23822:9;23818:18;23809:6;23765:72;:::i;:::-;23847:80;23923:2;23912:9;23908:18;23899:6;23847:80;:::i;:::-;23937;24013:2;24002:9;23998:18;23989:6;23937:80;:::i;:::-;24027:73;24095:3;24084:9;24080:19;24071:6;24027:73;:::i;:::-;24110;24178:3;24167:9;24163:19;24154:6;24110:73;:::i;:::-;23383:807;;;;;;;;;:::o;24196:663::-;24284:6;24292;24300;24349:2;24337:9;24328:7;24324:23;24320:32;24317:119;;;24355:79;;:::i;:::-;24317:119;24475:1;24500:64;24556:7;24547:6;24536:9;24532:22;24500:64;:::i;:::-;24490:74;;24446:128;24613:2;24639:64;24695:7;24686:6;24675:9;24671:22;24639:64;:::i;:::-;24629:74;;24584:129;24752:2;24778:64;24834:7;24825:6;24814:9;24810:22;24778:64;:::i;:::-;24768:74;;24723:129;24196:663;;;;;:::o;24865:332::-;24986:4;25024:2;25013:9;25009:18;25001:26;;25037:71;25105:1;25094:9;25090:17;25081:6;25037:71;:::i;:::-;25118:72;25186:2;25175:9;25171:18;25162:6;25118:72;:::i;:::-;24865:332;;;;;:::o;25203:177::-;25343:29;25339:1;25331:6;25327:14;25320:53;25203:177;:::o;25386:366::-;25528:3;25549:67;25613:2;25608:3;25549:67;:::i;:::-;25542:74;;25625:93;25714:3;25625:93;:::i;:::-;25743:2;25738:3;25734:12;25727:19;;25386:366;;;:::o;25758:419::-;25924:4;25962:2;25951:9;25947:18;25939:26;;26011:9;26005:4;26001:20;25997:1;25986:9;25982:17;25975:47;26039:131;26165:4;26039:131;:::i;:::-;26031:139;;25758:419;;;:::o

Swarm Source

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