ETH Price: $2,288.05 (+0.00%)

Token

The Host (ADONAI)
 

Overview

Max Total Supply

23,333,333,231 ADONAI

Holders

19

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
331,357,967.091213438122351385 ADONAI

Value
$0.00
0xf3fbd0e4e2484723557e82744d94a8a8e4692df0
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:
ADONAI

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
                                                                 ▄╖╓  
                                                              ▄▓╨─,»ƒ≈, 
                                                            ▄██▌⌐,¬Q ░U⌂.
                                                         ▄█▓▓┘^^2,┐VΣ⌐^∩╩»
                                                      ,▄▓▓█▓Q╠"░¬¬╙í╙▐l¿-╚▀╓ 
                                                    ,#▓▓▓▓▓µ╙eµOΓÇ⌠"▄└w¬▐»⌠╩╚] 
                                                 ╓▓▓██▓▓▌╪p"╗╗Åε"∩░ⁿ╩╨╗C╞wN./ÜU⌐ 
                                               ▄▓█▓▓█▓╣▀▒╗╪çj╥╘»^"≡╙»¬⌂"Ç╪\j "¬└⌡╖
                                             ▄▓▓▀▓▓▓▓▓╙╩^~└┘┘h ¬Ö╥⌠└╚ƒ░,⌡Ü╙-╛╤";--╥≈
                                           ▄██▌▓▓███▌b*╥ └J╥ │░╙├╓b┘▌5▄╠╣v░j╙╕╔╬J╔▐┴╝Æ 
                                         ▄███▓╣▓▓██▌ `╜─'╙░Å╕▀⌐µ∩──┘╥╢▒▄▒▀┬▐▄*▒▐╙▄▒▄═╘╬½ 
                                      ▄▓▓█▓▓██▓▓▓▓▌.╙l-j▄½-≤│╙²~▄╡ ┴▄╚╠%┐`▐Ñ╜Θ╘⌠▐╛▌▀╛╜╨Ö»=╥
                                   .▄█▓█▓▓▓▓▓████▌«G,M╙t"ΓJÖN╚tÅ:`ÅM⌂╙ñ╙╗²#╥╖╟║▐7╚/▒d╚p╦▒\▐╩╗ 
                                 ╓▄█▓▓▓██▓█▓█▓█▀ ╦╙h╙Å╡└I"7╚",ΓΣ`╩▄┘ª╓"µ╘,╙"*ƒ└┐╥╠ ▌┤Φµ▐Σ╔╜╪╫▒⌐
                              ▄▓▓▓█▓▓╣╬▓▓▓███▓▀ª▄^.- └J▄ N.≈.╩╘/╩`▐.╠`─▒┘▄╖≈─ÖÿΓ╚╧─╠╥▒╡Æ╙╥╬╦╠╔╫╫▄  
                            ▄▓▓▀█▌╬▓▓▓▓▌▓████ ▄Στ¬ƒ"⌐Ot{⌐ΣD,M,╞#╘─^ăÖ> Ωⁿⁿ-;`¬,Θb╙─`┬╙-\⌡▒⌠"ƒ▄▄⌂╙▒╥
                          ▄█▓▓▓█▌▌▓▓█▓█▓███▓▀▄╙,╗τ║▒O,║ ¥▄░Cⁿ√,│╓╛.░≈╚▌└$∩^^ [¡%╘╓\]>Y⌐≤Γ╝╚≥╨╠╘Å╦ΦmÜ⌠w 
                        ▄▓▓▓▓╫▓▓╬▓▓▓▓▓▓▓█▓▓.MÑδçD,╡æε▐≤. ⌐▌L≥"C]j╔∞,]"3▒^L"╓,═╙U╓╛▐╙╛╨ε├╡╝ÖΦQ▄═╙▀▌╔╪╟╩▌╥ 
                     ▄█▓▓▓▓▌╫▓▓▓▓▌█▓▌██▓╩¿╧ⁿJ╙⌂╧,Σ&Γ▄.ïΓⁿ,Σ└". ╙¼,N⌐∩▄▄⌐»J╥≥*└└═Θ?%▒▒╛¬▀Γ╪╘,╦╨⌐Q╛┤Qæ╛▐▐▒╗⌠"
                  ╓▓▓▓▓╬▓▓▓╣▓▓▓▓▓▓█╣█▓▌▀¬≈▌▄{,▒"Θ╥½,%*"┘"~²Y\Hê⌂»╙?.T└┴╫p\╞╙▄└ ▄┐p²▐╨╬╨*┘╥╙µ╫╩dæ⌡▐,▐Ö╓É"▐▄Γª⌠" 
                ▄▓▓▓▓▓▓╣▓▓▓█▓▓██▓█▓█▌▓╝─▐▒▌▒▀@▀µ▒╣╚7╚▒▌▒²╬ç▀▄╙╨▄╜╚▒╟=╙╝╨╬▀ΓÇÑ╖åΓ╜ΓÇ.,╚ ├"Σ▒▒╠≡▒▐╓╓╙╥╝╙5╫╬▐╚╬▄╝╦⌠"
              ▄▓                                                                                               ▒▄▐▒╗⌐
            ▄▓▓▓                          █████╗ ██████╗  ██████╗ ███╗   ██╗ █████╗ ██╗                        ▒╗╟▄▄╓  
         ▄▓▓▓▓╫▓                         ██╔══██╗██╔══██╗██╔═══██╗████╗  ██║██╔══██╗██║                        ▒▐▒╗▄▄╝╦╜
      ▄▓▓▓▓╫▓▓╬▓                         ███████║██║  ██║██║   ██║██╔██╗ ██║███████║██║                        ▒▐▒╗▐▐▄▄▄
        ▀▓▐▐╛æb┤                         ██╔══██║██║  ██║██║   ██║██║╚██╗██║██╔══██║██║                        ▒⌠"æ▐▄▄▒╗╩▄ 
          ▀▓╬▓▓▓                         ██║  ██║██████╔╝╚██████╔╝██║ ╚████║██║  ██║██║                        ▒ ⌠▐▄▄▒╗"w
            ▀▓╬▓                         ╚═╝  ╚═╝╚═════╝  ╚═════╝ ╚═╝  ╚═══╝╚═╝  ╚═╝╚═╝                        ▒ ╩▌▄▄▄▄╥
              ▀▓                                                                                               ▒▄▄▄▄╥
               ▀                     (https://medium.com/@PRA_/pra-ecosystem-35a4c3e8cc8a)                     ▒╗▄▄
                 ▀▓▓╬▓▓▓╣▓▓▓▓▓▓█╣█▓▌▓╝─▐▒▌▒▀@▀µ▒╣╚7╚▒▌▒²╬ç▀▄╙╨▄╜╚▒╟=╙╝╨╬▀ΓÇÑ╖åΓ╜ΓÇ.,╚ ├"Σ▒▒╠≡▒▐╓╓╙╥╝╙5╫╬▐╚╬╝╦▄▄▒▄
                   ▀▓▀█▌╬▓▓▓▓▓▓▓▓                                                                    æ⌠"ƒ▄▄─╠╥▒╡
                     ▀▓ ▀█▌╬▓▓▓▓▓        𓂀                ADONAI - The Host                𓂀       ╥╬ ─╠▒╡╙╥
                       ▀▓ ▓▓▓▓▓▓▓                                                                    ╪─╠╥╡╦▀⌐
                         ▀▓▓▓▓▓▓▓       Vision is teh art of seeing what is invisible to others.     ╗╠╥▒▀
                           ▀▓█▓▓▓    Teh people shall make teh community and they shall see light.   =╠╥▒
                             ▀▓▓▓                               5% Tax                               ╠╦½
                              ▀▓▓           ALL TAXES WILL GO TO THE LIQUIDITY POOLS                 ⁿⁿ
                                 ▀                                                                   b
                                   ▀▓▓▓█▓▓██▓  ¬D,╡æε▐≤. ⌐▌L≥"C]j╔∞,]"3▒ⁿⁿ-;`¬,Θb╙─`┬╙^L"╓,═╙U╓╛▐╙╛╨
                                     ▀▓▓▓█▓▓██▓ ÜD,╡æε▐≤. ⌐▌L≥"ⁿⁿ-;`¬,Θb╙─`╙C]j╔∞,ⁿⁿ-;`¬,Θb╙─╙─`┬
                                       ▀▓▓▓█▓▓██▓ ΓÇ⌠"▄└w¬Oⁿⁿ-;`¬,Θb╙─`┬╙,║¥▄░Cⁿ√,│╓╛.░≈╚▌b╙─$∩^
                                         ▀▓▓▓█▓▓██▓ │╙²~▄╡ ┴▄╚╠%┐`b╙─▐Ñ╜Θ╘⌠╛░Å╕▀⌐┐`▐Ñ╜Θ┐`▐Ñ╜Θ
                                          ,#█▓▓█▓▓▓▓▓╠"░¬¬╙ⁿⁿ-;`b╙─¬,Θb╙─`┬í╙ l¿-╚▀╓`╜─'╙░Å
                                              ▓▀▓▓▓▓▓▓▓╙╩^~└┘┘h ¬Ö╥⌠└ⁿⁿ-;`¬╙─Θb╙─`┬╙╚ƒ░,
                                               ,#▓▓▓▓▓▓▓µ╙eµOΓÇ⌠"▄└ⁿⁿb╙─-;`,Θb╙─`┬╙w¬▐»
                                                   ▄█▓▓▓▓▓┘^^2,┐Vⁿⁿ-;`¬,Θbb╙─╙b╙─`┬╙Σ
                                                      ▀▓▓▓ ▓▄┘^^ⁿⁿ-;`¬,Θbb╙─╙─┬╙2b╙
                                                         ▄▓▓▓ └J╥ │░╙├╓b┘▌5▄╠╣v░╖  
                                                          ▀▓▓▓▒O,║ ¥▄░Cⁿ√,│╓╛.
                                                             ▄▓▄╖▄╖╓▒O,║ ¥╚ 
                                                                ▓▄╖╓▒O,OΓ
                                                                  ▄╖╓▒
                                                                    ╖
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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


interface IERC20 {
    
    function totalSupply() external view returns (uint256);
   
    function balanceOf(address account) external view returns (uint256);
   
    function transfer(address recipient, uint256 amount) external returns (bool);
   
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender,address recipient,uint256 amount) external returns (bool); 
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library Address {

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

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

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


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

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

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

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

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

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

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




contract ADONAI is Context,IERC20, Ownable{
    using Address for address;

    string private _name = "The Host";
    string private _symbol = "ADONAI";
    uint8 private _decimals = 18;
    uint256 totalFeeFortx = 0;
    uint256 maxWalletTreshold = 3;
    uint256 maxTxTreshold = 2;
    uint256 private swapTreshold =2;

    uint256 private currentThreshold = 20; //Once the token value goes up this number can be decreased (To reduce price impact on asset)
    uint256 private _totalSupply = 23333333231 * 10**_decimals; 
    uint256 public requiredTokensToSwap = _totalSupply * swapTreshold /1000;
    mapping (address => uint256) private _balances;
    mapping (address => bool) private _excludedFromFees;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public automatedMarketMakerPairs;
    address _owner;
    address payable public marketingAddress = payable(0xD453237E613863A8CB0060d28B4B6d91cc28601f);
    address public NOS =  (0x234736F78a6F18d20d3d2eD0544c55d38F26b1CD);
    address public POO = (0x2B52cC9051991B42A77CA1Dc703f6d15E0981241);
    uint256 maxWalletAmount = _totalSupply*maxWalletTreshold/100; 
    uint256 maxTxAmount = _totalSupply*maxTxTreshold/100;
    mapping (address => bool) botWallets;
    bool botTradeEnabled = false;
    bool checkWalletSize = true;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private presaleAddresses;
    uint256 private buyliqFee = 5; 
    uint256 private buyprevLiqFee = 5;
    uint256 private buymktFee = 0;
    uint256 private buyPrevmktFee = 0;
    uint256 private buyNOS = 0;
    uint256 private buyprevNOS = 0;
    uint256 private buyPOO = 0;
    uint256 private buyPrevPOO = 0;
    
    bool private tradeEnabled = false;

    
    uint256 private sellliqFee = 5;
    uint256 private sellprevLiqFee = 5;
    uint256 private sellmktFee = 0;
    uint256 private sellPrevmktFee = 0;
    uint256 private sellNOS = 0;
    uint256 private sellprevNOS = 0;
    uint256 private sellPOO = 0;
    uint256 private sellPrevPOO =1;


    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    uint256 private mktTokens = 0;
    uint256 private NOSTokens = 0;
    uint256 private liqTokens = 0;
    uint256 private POOtokens =0;

    
    event SwapAndLiquify(uint256 tokensSwapped,
		uint256 ethReceived,
		uint256 tokensIntoLiquidity
	);
    event tokensSwappedDuringTokenomics(uint256 amount);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    
    // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
    IUniswapV2Router02 _router;
    address public uniswapV2Pair;

    //Balances tracker

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

    constructor(){
        _balances[_msgSender()] = _totalSupply;
        //0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D mainnet and all networks
        IUniswapV2Router02 _uniRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        uniswapV2Pair = IUniswapV2Factory(_uniRouter.factory())
            .createPair(address(this), _uniRouter.WETH());
        
        _excludedFromFees[owner()] = true;         
        _excludedFromFees[address(this)] = true;// exclude owner and contract instance from fees
        _router = _uniRouter;
        _liquidityHolders[address(_router)] = true;
        _liquidityHolders[owner()] = true;
        _liquidityHolders[address(this)] = true;
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        emit Transfer(address(0),_msgSender(),_totalSupply);




    }
    receive() external payable{}


    //general token data and tracking of balances to be swapped.
    function getOwner()external view returns(address){
            return owner();
    }
    function currentmktTokens() external view returns (uint256){
            return mktTokens;
     }
     function currentPZTokens() external view returns (uint256){
            return NOSTokens;
     }
      function currentPOOokens() external view returns (uint256){
            return POOtokens;
     }
     function currentLiqTokens() external view returns (uint256){
            return liqTokens;
     }

     function totalSupply() external view override returns (uint256){
            return _totalSupply;
     }
   
    function balanceOf(address account) public view override returns (uint256){
        return _balances[account];
    }
   
    function transfer(address recipient, uint256 amount) external override returns (bool){
            _transfer(_msgSender(),recipient,amount);
            return true;

    }
   
    function allowance(address owner, address spender) external view override returns (uint256){
            return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount) external override returns (bool){
            _approve(_msgSender(),spender,amount);
            return true;
    }

    function decimals()external view returns(uint256){
        return _decimals;
    }
    function name() external view returns (string memory) {
		return _name;
	}
    function symbol() external view returns (string memory){
        return _symbol;
    }
        function updateMaxTxTreshold(uint256 newVal) public onlyOwner{
        maxTxTreshold = newVal;
        maxTxAmount = _totalSupply*maxTxTreshold/100;// 1%

    }
     function updateMaxWalletTreshold(uint256 newVal) public onlyOwner{
        maxWalletTreshold = newVal;
        maxWalletAmount = _totalSupply*maxWalletTreshold/100;

    }
    

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

    function addBotWallet (address payable detectedBot, bool isBot) public onlyOwner{
        botWallets[detectedBot] = isBot;
    }
    function currentbuyliqFee() public view returns (uint256){
            return buyliqFee;
    }
    function currentbuymktfee() public view returns (uint256){
            return buymktFee;
    }
    function currentbuyNOSfee() public view returns (uint256){
            return buyNOS;
    }
     function currentbuyPOOfee() public view returns (uint256){
            return buyPOO;
    }

      function currentsellLiqFee() public view returns (uint256){
            return sellliqFee;
    }
    function currentsellmktfee() public view returns (uint256){
            return sellmktFee;
    }
    function currentsellyNOSfee() public view returns (uint256){
            return sellNOS;
    }
     function currentsellyPOOfee() public view returns (uint256){
            return sellPOO;
    }
    function currentThresholdInt()public view returns (uint256){
        return currentThreshold;
    }
    function isExcluded(address toCheck)public view returns (bool){
            return _excludedFromFees[toCheck];
    }

    function _transfer(address from, address to, uint256 amount) internal{
        
        require(from != address(0), "ERC20: transfer from the zero address");
		require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0,"ERC20: transfered amount must be greater than zero");
        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        if(tradeEnabled == false){
            require(_liquidityHolders[to] || _liquidityHolders[from],"Cant trade, trade is disabled");
        }
        if(_liquidityHolders[to]==false && _liquidityHolders[from]==false){
        require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }
        uint256 inContractBalance = balanceOf(address(this));
        if(inContractBalance >=requiredTokensToSwap && 
			!inSwapAndLiquify && 
			from != uniswapV2Pair && 
			swapAndLiquifyEnabled){
                if(inContractBalance >= requiredTokensToSwap ){
                    inContractBalance = requiredTokensToSwap;
                    swapForTokenomics(inContractBalance);
                }
            }

            bool takeFees = true;
            
            
            if(_excludedFromFees[from] || _excludedFromFees[to]) {
                totalFeeFortx = 0;
                takeFees = false;
               

            }
            uint256 mktAmount = 0;
            uint256 NOSAmount = 0; // Amount to be added to prize pool.
		    uint256 liqAmount = 0;  // Amount to be added to liquidity.
            uint256 POOamount = 0;
            if(takeFees){
                
                //bot fees
                if(botWallets[from] == true||botWallets[to]==true){
                    revert("No bots allowed to trade");
                }
                //Selling fees
                if (automatedMarketMakerPairs[to] && to != address(_router) ){
                        totalFeeFortx = 0;
                        mktAmount = amount * sellmktFee/100;
                        liqAmount = amount * sellliqFee/100;
                        NOSAmount = amount * sellNOS/100;
                        POOamount = amount * sellPOO/100;
                        totalFeeFortx = mktAmount + liqAmount + NOSAmount;
                }
                //Buy Fees
                else if(automatedMarketMakerPairs[from] && from != address(_router)) {
                
                    totalFeeFortx = 0;
                    mktAmount = amount * buymktFee/100;
                    liqAmount = amount * buyliqFee/100;
                    NOSAmount = amount * buyNOS/100;
                    POOamount = amount * buyPOO/100;
                    totalFeeFortx = mktAmount + liqAmount + NOSAmount;
                }

                
            }

            _balances[from] = senderBalance - amount;
            _balances[to] += amount - mktAmount - NOSAmount - liqAmount-POOamount;

          if(liqAmount != 0) {
			_balances[address(this)] += totalFeeFortx;
			//tLiqTotal += liqAmount;
            liqTokens += liqAmount;
            NOSTokens += NOSAmount;
            mktTokens += mktAmount;
            POOtokens += POOamount;
			emit Transfer(from, address(this), totalFeeFortx);
            
		    }
            emit Transfer(from, to,amount-totalFeeFortx);
            
        
    }
    function swapForTokenomics(uint256 balanceToswap) private lockTheSwap{
        swapAndLiquify(liqTokens);
        swapTokensForETHmkt(mktTokens);
        SwapForNOS(NOSTokens);
        uint256 halfETHBalance = address(this).balance;
        processNOS(halfETHBalance,NOS);
        SwapForNOS(POOtokens);
        uint256 remainingETHBalance = address(this).balance;
        processNOS(remainingETHBalance,POO);
  
        emit tokensSwappedDuringTokenomics(balanceToswap);
        mktTokens = 0;
        NOSTokens = 0;
        liqTokens = 0;
        POOtokens = 0;
    }
     function addLimitExempt(address newAddress)external onlyOwner{
        _liquidityHolders[newAddress] = true;
     
    }
    function swapTokensForETHmkt(uint256 amount)private {
        address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), amount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			amount,
			0, // Accept any amount of ETH.
			path,
			marketingAddress,
			block.timestamp
		);

    }
      function SwapForNOS(uint256 amount)private {
        address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), amount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			amount,
			0, // Accept any amount of ETH.
			path,
			address(this),
			block.timestamp
		);
        

    }
    function updateNOS(address newToken) external{
        NOS = newToken;
    }
     function updatePOO(address newToken) external{
        POO = newToken;
    }
    function processNOS(uint256 ethAmount, address rewardToken) internal {
        // generate the uniswap pair path of weth -> eth
        address[] memory path = new address[](2);
        path[0] = _router.WETH();
        path[1] = rewardToken;

        // make the swap
        _router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
            0, // accept any amount of Ethereum
            path,
            address(this),
            block.timestamp
        );
    }

    function unstuckTokens (IERC20 tokenToClear, address payable destination, uint256 amount) public onlyOwner{
        //uint256 contractBalance = tokenToClear.balanceOf(address(this));
        tokenToClear.transfer(destination, amount);
    }

    function unstuckETH(address payable destination) public onlyOwner{
        uint256 ethBalance = address(this).balance;
        payable(destination).transfer(ethBalance);
    }

    function tradeStatus(bool status) public onlyOwner{
        tradeEnabled = status;
    }

    function swapAndLiquify(uint256 liqTokensPassed) private {
		uint256 half = liqTokensPassed / 2;
		uint256 otherHalf = liqTokensPassed - half;
		uint256 initialBalance = address(this).balance;

		swapTokensForETH(half);
		uint256 newBalance = address(this).balance - (initialBalance); 

		addLiquidity(otherHalf, newBalance);
		emit SwapAndLiquify(half,newBalance,otherHalf);
	}

    function swapTokensForETH(uint256 tokenAmount) private{
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), tokenAmount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			tokenAmount,
			0, // Accept any amount of ETH.
			path,
			address(this),
			block.timestamp
		);
	}
    
    function addLiquidity(uint256 tokenAmount,uint256 ethAmount) private{
		_approve(address(this), address(_router), tokenAmount);

		_router.addLiquidityETH{value:ethAmount}(
			address(this),
			tokenAmount,
			0,
			0,
			deadAddress,// tr
			block.timestamp
		);
	}

    function _approve(address owner,address spender, uint256 amount) internal{
        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);


    }




    //Fees related functions

    function addToExcluded(address toExclude) public onlyOwner{  
        _excludedFromFees[toExclude] = true;
    }

    function removeFromExcluded(address toRemove) public onlyOwner{
        _excludedFromFees[toRemove] = false;
    }
      function excludePresaleAddresses(address router, address presale) external onlyOwner {
        
        _liquidityHolders[address(router)] = true;
        _liquidityHolders[presale] = true;
        presaleAddresses[address(router)] = true;
        presaleAddresses[presale] = true;
       
    }

    function startPresaleStatus()public onlyOwner{
        
        buymktFee = 0;
        sellmktFee =0;
        buyliqFee =0;
        sellliqFee =0;
        buyNOS =0;
        sellNOS = 0;
        buyPOO =0;
        sellPOO = 0;
        setSwapAndLiquify(false);

    }
    function endPresaleStatus() public onlyOwner{
        buymktFee = 1;
        buyliqFee = 1;
        buyNOS = 1;
        buyPOO =1;

        sellmktFee = 1;
        sellliqFee = 1;
        sellNOS = 1;
        sellPOO =1;
        setSwapAndLiquify(true);
    }

    function updateThreshold(uint newThreshold) public onlyOwner{
        currentThreshold = newThreshold;

    }

    function setSwapAndLiquify(bool _enabled) public onlyOwner{
            swapAndLiquifyEnabled = _enabled;
    }


    //Marketing related 

    function setMktAddress(address newAddress) external onlyOwner{
        marketingAddress = payable(newAddress);
    }
   
    function transferAssetsETH(address payable to, uint256 amount) internal{
            to.transfer(amount);
    }
   
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updatecurrentbuyliqFee(uint256 newAmount) public onlyOwner{
            buyliqFee = newAmount;
    }
    function updatecurrentbuymktfee(uint256 newAmount) public onlyOwner{
             buymktFee= newAmount;
    }
    function updatecurrentbuyNOSfee(uint256 newAmount) public onlyOwner{
             buyNOS= newAmount;
    }
     function updatecurrentbuyPOOfee(uint256 newAmount) public onlyOwner{
             buyPOO= newAmount;
    }

      function updatecurrentsellLiqFee(uint256 newAmount) public onlyOwner{
             sellliqFee= newAmount;
    }
    function updatecurrentsellmktfee(uint256 newAmount)public onlyOwner{
             sellmktFee= newAmount;
    }
    
    function updatecurrentsellyNOSfee(uint256 newAmount) public onlyOwner{
             sellNOS= newAmount;
    }
     function updatecurrentsellyPOOfee(uint256 newAmount) public onlyOwner{
             sellPOO= newAmount;
    }
    function currentMaxWallet() public view returns(uint256){
        return maxWalletAmount;
    }
    function currentMaxTx() public view returns(uint256){
        return maxTxAmount;
    }
    function updateSwapTreshold(uint256 newVal) public onlyOwner{
        swapTreshold = newVal;
        requiredTokensToSwap = _totalSupply*swapTreshold/1000;
        
    }
    function currentTradeStatus() public view returns (bool){
        return tradeEnabled;   
    }
    function currentSwapTreshold() public view returns(uint256){
        return swapTreshold;
    }
    function currentTokensToSwap() public view returns(uint256){
        return requiredTokensToSwap;
    }
    function AHD666LaunchPad() public pure returns(uint256) {
        return 1;
    }
}


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 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 Mint(address indexed sender, uint amount0, uint amount1);
    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 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 Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensSwappedDuringTokenomics","type":"event"},{"inputs":[],"name":"AHD666LaunchPad","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"NOS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"detectedBot","type":"address"},{"internalType":"bool","name":"isBot","type":"bool"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"addLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toExclude","type":"address"}],"name":"addToExcluded","outputs":[],"stateMutability":"nonpayable","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":"currentLiqTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPOOokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPZTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSwapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentThresholdInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTradeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyNOSfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyPOOfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyliqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuymktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentmktTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellmktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellyNOSfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellyPOOfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toCheck","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeFromExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requiredTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMktAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"tradeStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"unstuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenToClear","type":"address"},{"internalType":"address payable","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxTxTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxWalletTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newToken","type":"address"}],"name":"updateNOS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newToken","type":"address"}],"name":"updatePOO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyNOSfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyPOOfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyliqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuymktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellLiqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellmktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellyNOSfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellyPOOfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600881526020017f54686520486f7374000000000000000000000000000000000000000000000000815250600190805190602001906200005192919062000a6e565b506040518060400160405280600681526020017f41444f4e41490000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000a6e565b506012600360006101000a81548160ff021916908360ff16021790555060006004556003600555600260065560026007556014600855600360009054906101000a900460ff16600a620000f3919062000c66565b64056ec668ef62000105919062000da3565b6009556103e86007546009546200011d919062000da3565b62000129919062000bd3565b600a5573d453237e613863a8cb0060d28b4b6d91cc28601f601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073234736f78a6f18d20d3d2ed0544c55d38f26b1cd601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732b52cc9051991b42a77ca1dc703f6d15e0981241601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060646005546009546200023f919062000da3565b6200024b919062000bd3565b601355606460065460095462000262919062000da3565b6200026e919062000bd3565b6014556000601660006101000a81548160ff0219169083151502179055506001601660016101000a81548160ff02191690831515021790555060056019556005601a556000601b556000601c556000601d556000601e556000601f5560006020556000602160006101000a81548160ff021916908315150217905550600560225560056023556000602455600060255560006026556000602755600060285560016029556001602a60016101000a81548160ff02191690831515021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152506000602b556000602c556000602d556000602e553480156200038657600080fd5b50620003a76200039b620008d860201b60201c565b620008e060201b60201c565b600954600b6000620003be620008d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045c57600080fd5b505afa15801562000471573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000497919062000b35565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004fa57600080fd5b505afa1580156200050f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000535919062000b35565b6040518363ffffffff1660e01b81526004016200055492919062000b89565b602060405180830381600087803b1580156200056f57600080fd5b505af115801562000584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005aa919062000b35565b603060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c600062000600620009a460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080602f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160176000602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760006200077a620009a460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000858603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620009cd60201b60201c565b62000868620008d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620008c9919062000bb6565b60405180910390a35062000f3e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b82805462000a7c9062000e4f565b90600052602060002090601f01602090048101928262000aa0576000855562000aec565b82601f1062000abb57805160ff191683800117855562000aec565b8280016001018555821562000aec579182015b8281111562000aeb57825182559160200191906001019062000ace565b5b50905062000afb919062000aff565b5090565b5b8082111562000b1a57600081600090555060010162000b00565b5090565b60008151905062000b2f8162000f24565b92915050565b60006020828403121562000b4e5762000b4d62000f12565b5b600062000b5e8482850162000b1e565b91505092915050565b62000b728162000e04565b82525050565b62000b838162000e38565b82525050565b600060408201905062000ba0600083018562000b67565b62000baf602083018462000b67565b9392505050565b600060208201905062000bcd600083018462000b78565b92915050565b600062000be08262000e38565b915062000bed8362000e38565b92508262000c005762000bff62000eb4565b5b828204905092915050565b6000808291508390505b600185111562000c5d5780860481111562000c355762000c3462000e85565b5b600185161562000c455780820291505b808102905062000c558562000f17565b945062000c15565b94509492505050565b600062000c738262000e38565b915062000c808362000e42565b925062000caf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cb7565b905092915050565b60008262000cc9576001905062000d9c565b8162000cd9576000905062000d9c565b816001811462000cf2576002811462000cfd5762000d33565b600191505062000d9c565b60ff84111562000d125762000d1162000e85565b5b8360020a91508482111562000d2c5762000d2b62000e85565b5b5062000d9c565b5060208310610133831016604e8410600b841016171562000d6d5782820a90508381111562000d675762000d6662000e85565b5b62000d9c565b62000d7c848484600162000c0b565b9250905081840481111562000d965762000d9562000e85565b5b81810290505b9392505050565b600062000db08262000e38565b915062000dbd8362000e38565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000df95762000df862000e85565b5b828202905092915050565b600062000e118262000e18565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000e6857607f821691505b6020821081141562000e7f5762000e7e62000ee3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b62000f2f8162000e04565b811462000f3b57600080fd5b50565b60805160601c6156cb62000f646000396000818161148001526143f601526156cb6000f3fe6080604052600436106103fe5760003560e01c8063893d20e811610213578063b4d95a9311610123578063d15bcf0f116100ab578063e1370dd31161007a578063e1370dd314610ef2578063edcf19b214610f1d578063f2fde38b14610f46578063f7da678514610f6f578063f953cf3a14610f9857610405565b8063d15bcf0f14610e36578063d7d7442f14610e61578063dd62ed3e14610e8a578063ddcf9b9814610ec757610405565b8063bf9b0159116100f2578063bf9b015914610d53578063bf9eb54014610d7e578063cb66453414610da7578063cba0e99614610dd0578063d1294d4c14610e0d57610405565b8063b4d95a9314610c99578063b62496f514610cc2578063b682428e14610cff578063b934f33b14610d2857610405565b80639a7a23d6116101a6578063a6c38f5911610175578063a6c38f5914610bc8578063a7a0745214610bf1578063a8c40a4214610c1a578063a9059cbb14610c45578063b195b83914610c8257610405565b80639a7a23d614610b1e5780639b136da414610b47578063a04bdc8114610b72578063a5ece94114610b9d57610405565b806390f50283116101e257806390f5028314610a7657806395d89b4114610aa157806397385fa914610acc5780639878665f14610af557610405565b8063893d20e8146109ce5780638ace0a9e146109f95780638cd0260c14610a225780638da5cb5b14610a4b57610405565b80634a74bb021161030e5780636f426886116102a15780637a94d54b116102705780637a94d54b146108fd5780637c27b824146109265780637ffb403314610951578063801527ce1461097c5780638628c23f146109a557610405565b80636f4268861461085357806370a082311461087e578063715018a6146108bb57806377bc419e146108d257610405565b806364c16163116102dd57806364c16163146107a95780636573c4df146107d45780636ce5a8a5146107fd5780636df3333a1461082857610405565b80634a74bb02146106ff5780634bd7ace51461072a5780635297defd146107555780635be76f111461078057610405565b806323b872dd11610391578063313ce56711610360578063313ce5671461062c5780633ec7d06e14610657578063487a69051461068057806349bd5a5e146106ab5780634a0e963c146106d657610405565b806323b872dd1461057057806323dbce82146105ad57806327c8f835146105d85780632d03420b1461060357610405565b806314c0eaf9116103cd57806314c0eaf9146104c457806318160ddd146104ef578063220f66961461051a57806322788f861461054557610405565b806306fdde031461040a5780630882a86314610435578063095ea7b31461045e57806313b4a7f41461049b57610405565b3661040557005b600080fd5b34801561041657600080fd5b5061041f610faf565b60405161042c9190614c45565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906147bf565b611041565b005b34801561046a57600080fd5b50610485600480360381019061048091906146d2565b6110c7565b6040516104929190614bde565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd91906145ff565b6110e5565b005b3480156104d057600080fd5b506104d96112c5565b6040516104e69190614e07565b60405180910390f35b3480156104fb57600080fd5b506105046112cf565b6040516105119190614e07565b60405180910390f35b34801561052657600080fd5b5061052f6112d9565b60405161053c9190614bde565b60405180910390f35b34801561055157600080fd5b5061055a6112ec565b6040516105679190614e07565b60405180910390f35b34801561057c57600080fd5b506105976004803603810190610592919061463f565b6112f6565b6040516105a49190614bde565b60405180910390f35b3480156105b957600080fd5b506105c2611474565b6040516105cf9190614e07565b60405180910390f35b3480156105e457600080fd5b506105ed61147e565b6040516105fa9190614b1e565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190614712565b6114a2565b005b34801561063857600080fd5b5061064161153b565b60405161064e9190614e07565b60405180910390f35b34801561066357600080fd5b5061067e60048036038101906106799190614538565b611555565b005b34801561068c57600080fd5b50610695611599565b6040516106a29190614e07565b60405180910390f35b3480156106b757600080fd5b506106c06115a3565b6040516106cd9190614b1e565b60405180910390f35b3480156106e257600080fd5b506106fd60048036038101906106f89190614538565b6115c9565b005b34801561070b57600080fd5b506107146116a0565b6040516107219190614bde565b60405180910390f35b34801561073657600080fd5b5061073f6116b3565b60405161074c9190614e07565b60405180910390f35b34801561076157600080fd5b5061076a6116bd565b6040516107779190614e07565b60405180910390f35b34801561078c57600080fd5b506107a760048036038101906107a29190614592565b6116c7565b005b3480156107b557600080fd5b506107be611793565b6040516107cb9190614e07565b60405180910390f35b3480156107e057600080fd5b506107fb60048036038101906107f691906147bf565b61179d565b005b34801561080957600080fd5b50610812611845565b60405161081f9190614e07565b60405180910390f35b34801561083457600080fd5b5061083d61184f565b60405161084a9190614e07565b60405180910390f35b34801561085f57600080fd5b50610868611859565b6040516108759190614e07565b60405180910390f35b34801561088a57600080fd5b506108a560048036038101906108a09190614538565b611863565b6040516108b29190614e07565b60405180910390f35b3480156108c757600080fd5b506108d06118ac565b005b3480156108de57600080fd5b506108e7611934565b6040516108f49190614e07565b60405180910390f35b34801561090957600080fd5b50610924600480360381019061091f91906147bf565b61193e565b005b34801561093257600080fd5b5061093b6119c4565b6040516109489190614e07565b60405180910390f35b34801561095d57600080fd5b506109666119cd565b6040516109739190614e07565b60405180910390f35b34801561098857600080fd5b506109a3600480360381019061099e9190614712565b6119d7565b005b3480156109b157600080fd5b506109cc60048036038101906109c791906147bf565b611a70565b005b3480156109da57600080fd5b506109e3611af6565b6040516109f09190614b1e565b60405180910390f35b348015610a0557600080fd5b50610a206004803603810190610a1b91906147bf565b611b05565b005b348015610a2e57600080fd5b50610a496004803603810190610a4491906147bf565b611b8b565b005b348015610a5757600080fd5b50610a60611c11565b604051610a6d9190614b1e565b60405180910390f35b348015610a8257600080fd5b50610a8b611c3a565b604051610a989190614e07565b60405180910390f35b348015610aad57600080fd5b50610ab6611c44565b604051610ac39190614c45565b60405180910390f35b348015610ad857600080fd5b50610af36004803603810190610aee91906147bf565b611cd6565b005b348015610b0157600080fd5b50610b1c6004803603810190610b1791906147bf565b611d5c565b005b348015610b2a57600080fd5b50610b456004803603810190610b409190614692565b611de2565b005b348015610b5357600080fd5b50610b5c611efd565b604051610b699190614e07565b60405180910390f35b348015610b7e57600080fd5b50610b87611f07565b604051610b949190614e07565b60405180910390f35b348015610ba957600080fd5b50610bb2611f0d565b604051610bbf9190614b39565b60405180910390f35b348015610bd457600080fd5b50610bef6004803603810190610bea91906145bf565b611f33565b005b348015610bfd57600080fd5b50610c186004803603810190610c1391906147bf565b61200a565b005b348015610c2657600080fd5b50610c2f6120b2565b604051610c3c9190614b1e565b60405180910390f35b348015610c5157600080fd5b50610c6c6004803603810190610c6791906146d2565b6120d8565b604051610c799190614bde565b60405180910390f35b348015610c8e57600080fd5b50610c976120f6565b005b348015610ca557600080fd5b50610cc06004803603810190610cbb9190614538565b6121be565b005b348015610cce57600080fd5b50610ce96004803603810190610ce49190614538565b612295565b604051610cf69190614bde565b60405180910390f35b348015610d0b57600080fd5b50610d266004803603810190610d219190614538565b6122b5565b005b348015610d3457600080fd5b50610d3d6122f9565b604051610d4a9190614b1e565b60405180910390f35b348015610d5f57600080fd5b50610d6861231f565b604051610d759190614e07565b60405180910390f35b348015610d8a57600080fd5b50610da56004803603810190610da09190614538565b612329565b005b348015610db357600080fd5b50610dce6004803603810190610dc99190614538565b6123e9565b005b348015610ddc57600080fd5b50610df76004803603810190610df29190614538565b6124c0565b604051610e049190614bde565b60405180910390f35b348015610e1957600080fd5b50610e346004803603810190610e2f91906147bf565b612516565b005b348015610e4257600080fd5b50610e4b6125bf565b604051610e589190614bde565b60405180910390f35b348015610e6d57600080fd5b50610e886004803603810190610e8391906147bf565b6125d6565b005b348015610e9657600080fd5b50610eb16004803603810190610eac91906145ff565b61265c565b604051610ebe9190614e07565b60405180910390f35b348015610ed357600080fd5b50610edc6126e3565b604051610ee99190614e07565b60405180910390f35b348015610efe57600080fd5b50610f076126ed565b604051610f149190614e07565b60405180910390f35b348015610f2957600080fd5b50610f446004803603810190610f3f91906147bf565b6126f7565b005b348015610f5257600080fd5b50610f6d6004803603810190610f689190614538565b61277d565b005b348015610f7b57600080fd5b50610f966004803603810190610f91919061476c565b612875565b005b348015610fa457600080fd5b50610fad612984565b005b606060018054610fbe9061515e565b80601f0160208091040260200160405190810160405280929190818152602001828054610fea9061515e565b80156110375780601f1061100c57610100808354040283529160200191611037565b820191906000526020600020905b81548152906001019060200180831161101a57829003601f168201915b5050505050905090565b611049612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611067611c11565b73ffffffffffffffffffffffffffffffffffffffff16146110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b490614d87565b60405180910390fd5b8060198190555050565b60006110db6110d4612a4c565b8484612a54565b6001905092915050565b6110ed612a4c565b73ffffffffffffffffffffffffffffffffffffffff1661110b611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115890614d87565b60405180910390fd5b6001601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000602c54905090565b6000600954905090565b602a60009054906101000a900460ff1681565b6000600854905090565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611341612a4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b590614d67565b60405180910390fd5b6113c9848484612c1f565b611469846113d5612a4c565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061141f612a4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114649190615043565b612a54565b600190509392505050565b6000602854905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6114aa612a4c565b73ffffffffffffffffffffffffffffffffffffffff166114c8611c11565b73ffffffffffffffffffffffffffffffffffffffff161461151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151590614d87565b60405180910390fd5b80602160006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600a54905090565b603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115d1612a4c565b73ffffffffffffffffffffffffffffffffffffffff166115ef611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163c90614d87565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602a60019054906101000a900460ff1681565b6000601954905090565b6000602454905090565b6116cf612a4c565b73ffffffffffffffffffffffffffffffffffffffff166116ed611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a90614d87565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561178e573d6000803e3d6000fd5b505050565b6000602d54905090565b6117a5612a4c565b73ffffffffffffffffffffffffffffffffffffffff166117c3611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611819576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181090614d87565b60405180910390fd5b8060058190555060646005546009546118329190614fe9565b61183c9190614fb8565b60138190555050565b6000601f54905090565b6000600754905090565b6000602e54905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118b4612a4c565b73ffffffffffffffffffffffffffffffffffffffff166118d2611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191f90614d87565b60405180910390fd5b6119326000613736565b565b6000602654905090565b611946612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611964611c11565b73ffffffffffffffffffffffffffffffffffffffff16146119ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b190614d87565b60405180910390fd5b80601d8190555050565b60006001905090565b6000601d54905090565b6119df612a4c565b73ffffffffffffffffffffffffffffffffffffffff166119fd611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4a90614d87565b60405180910390fd5b80602a60016101000a81548160ff02191690831515021790555050565b611a78612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611a96611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae390614d87565b60405180910390fd5b8060248190555050565b6000611b00611c11565b905090565b611b0d612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611b2b611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7890614d87565b60405180910390fd5b8060288190555050565b611b93612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611bb1611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfe90614d87565b60405180910390fd5b8060228190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000602254905090565b606060028054611c539061515e565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7f9061515e565b8015611ccc5780601f10611ca157610100808354040283529160200191611ccc565b820191906000526020600020905b815481529060010190602001808311611caf57829003601f168201915b5050505050905090565b611cde612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611cfc611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4990614d87565b60405180910390fd5b80601f8190555050565b611d64612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611d82611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcf90614d87565b60405180910390fd5b8060268190555050565b611dea612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611e08611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5590614d87565b60405180910390fd5b603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee690614cc7565b60405180910390fd5b611ef982826137fa565b5050565b6000601b54905090565b600a5481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f3b612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611f59611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa690614d87565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612012612a4c565b73ffffffffffffffffffffffffffffffffffffffff16612030611c11565b73ffffffffffffffffffffffffffffffffffffffff1614612086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207d90614d87565b60405180910390fd5b80600681905550606460065460095461209f9190614fe9565b6120a99190614fb8565b60148190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006120ec6120e5612a4c565b8484612c1f565b6001905092915050565b6120fe612a4c565b73ffffffffffffffffffffffffffffffffffffffff1661211c611c11565b73ffffffffffffffffffffffffffffffffffffffff1614612172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216990614d87565b60405180910390fd5b6000601b819055506000602481905550600060198190555060006022819055506000601d8190555060006026819055506000601f8190555060006028819055506121bc60006119d7565b565b6121c6612a4c565b73ffffffffffffffffffffffffffffffffffffffff166121e4611c11565b73ffffffffffffffffffffffffffffffffffffffff161461223a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223190614d87565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b612331612a4c565b73ffffffffffffffffffffffffffffffffffffffff1661234f611c11565b73ffffffffffffffffffffffffffffffffffffffff16146123a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239c90614d87565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6123f1612a4c565b73ffffffffffffffffffffffffffffffffffffffff1661240f611c11565b73ffffffffffffffffffffffffffffffffffffffff1614612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90614d87565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61251e612a4c565b73ffffffffffffffffffffffffffffffffffffffff1661253c611c11565b73ffffffffffffffffffffffffffffffffffffffff1614612592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258990614d87565b60405180910390fd5b806007819055506103e86007546009546125ac9190614fe9565b6125b69190614fb8565b600a8190555050565b6000602160009054906101000a900460ff16905090565b6125de612a4c565b73ffffffffffffffffffffffffffffffffffffffff166125fc611c11565b73ffffffffffffffffffffffffffffffffffffffff1614612652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264990614d87565b60405180910390fd5b8060088190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602b54905090565b6000601354905090565b6126ff612a4c565b73ffffffffffffffffffffffffffffffffffffffff1661271d611c11565b73ffffffffffffffffffffffffffffffffffffffff1614612773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276a90614d87565b60405180910390fd5b80601b8190555050565b612785612a4c565b73ffffffffffffffffffffffffffffffffffffffff166127a3611c11565b73ffffffffffffffffffffffffffffffffffffffff16146127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f090614d87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286090614c87565b60405180910390fd5b61287281613736565b50565b61287d612a4c565b73ffffffffffffffffffffffffffffffffffffffff1661289b611c11565b73ffffffffffffffffffffffffffffffffffffffff16146128f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e890614d87565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161292c929190614b54565b602060405180830381600087803b15801561294657600080fd5b505af115801561295a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297e919061473f565b50505050565b61298c612a4c565b73ffffffffffffffffffffffffffffffffffffffff166129aa611c11565b73ffffffffffffffffffffffffffffffffffffffff1614612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f790614d87565b60405180910390fd5b6001601b8190555060016019819055506001601d819055506001601f819055506001602481905550600160228190555060016026819055506001602881905550612a4a60016119d7565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612abb90614de7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2b90614ca7565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c129190614e07565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8690614dc7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf690614c67565b60405180910390fd5b60008111612d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3990614d27565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc090614ce7565b60405180910390fd5b60001515602160009054906101000a900460ff1615151415612ec657601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e865750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebc90614d47565b60405180910390fd5b5b60001515601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015612f76575060001515601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612fc157601454821115612fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb790614d07565b60405180910390fd5b5b6000612fcc30611863565b9050600a548110158015612fed5750602a60009054906101000a900460ff16155b80156130475750603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561305f5750602a60019054906101000a900460ff165b1561307d57600a54811061307c57600a54905061307b8161389b565b5b5b600060019050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131245750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613136576000600481905550600090505b60008060008084156134bb5760011515601560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514806131f1575060011515601560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15613231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322890614da7565b60405180910390fd5b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132d85750602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b156133775760006004819055506064602454896132f59190614fe9565b6132ff9190614fb8565b93506064602254896133119190614fe9565b61331b9190614fb8565b915060646026548961332d9190614fe9565b6133379190614fb8565b92506064602854896133499190614fe9565b6133539190614fb8565b90508282856133629190614f62565b61336c9190614f62565b6004819055506134ba565b600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561341e5750602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614155b156134b95760006004819055506064601b548961343b9190614fe9565b6134459190614fb8565b93506064601954896134579190614fe9565b6134619190614fb8565b91506064601d54896134739190614fe9565b61347d9190614fb8565b92506064601f548961348f9190614fe9565b6134999190614fb8565b90508282856134a89190614f62565b6134b29190614f62565b6004819055505b5b5b87876134c79190615043565b600b60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808284868b6135199190615043565b6135239190615043565b61352d9190615043565b6135379190615043565b600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135859190614f62565b92505081905550600082146136b857600454600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135e59190614f62565b9250508190555081602d60008282546135fe9190614f62565b9250508190555082602c60008282546136179190614f62565b9250508190555083602b60008282546136309190614f62565b9250508190555080602e60008282546136499190614f62565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516136af9190614e07565b60405180910390a35b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004548b6137159190615043565b6040516137229190614e07565b60405180910390a350505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602a60006101000a81548160ff0219169083151502179055506138c1602d546139bb565b6138cc602b54613a46565b6138d7602c54613cba565b600047905061390881601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613f0c565b613913602e54613cba565b600047905061394481601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613f0c565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904836040516139739190614e07565b60405180910390a16000602b819055506000602c819055506000602d819055506000602e8190555050506000602a60006101000a81548160ff02191690831515021790555050565b60006002826139ca9190614fb8565b9050600081836139da9190615043565b905060004790506139ea83614131565b600081476139f89190615043565b9050613a048382614383565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051613a3793929190614ed6565b60405180910390a15050505050565b6000600267ffffffffffffffff811115613a6357613a6261524c565b5b604051908082528060200260200182016040528015613a915781602001602082028036833780820191505090505b5090503081600081518110613aa957613aa861521d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613b4b57600080fd5b505afa158015613b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b839190614565565b81600181518110613b9757613b9661521d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613bfe30602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a54565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613c84959493929190614e22565b600060405180830381600087803b158015613c9e57600080fd5b505af1158015613cb2573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613cd757613cd661524c565b5b604051908082528060200260200182016040528015613d055781602001602082028036833780820191505090505b5090503081600081518110613d1d57613d1c61521d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613dbf57600080fd5b505afa158015613dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df79190614565565b81600181518110613e0b57613e0a61521d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e7230602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a54565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ed6959493929190614e7c565b600060405180830381600087803b158015613ef057600080fd5b505af1158015613f04573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613f2957613f2861524c565b5b604051908082528060200260200182016040528015613f575781602001602082028036833780820191505090505b509050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613fc257600080fd5b505afa158015613fd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ffa9190614565565b8160008151811061400e5761400d61521d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061405d5761405c61521d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008430426040518663ffffffff1660e01b81526004016140fa9493929190614bf9565b6000604051808303818588803b15801561411357600080fd5b505af1158015614127573d6000803e3d6000fd5b5050505050505050565b6000600267ffffffffffffffff81111561414e5761414d61524c565b5b60405190808252806020026020018201604052801561417c5781602001602082028036833780820191505090505b50905030816000815181106141945761419361521d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561423657600080fd5b505afa15801561424a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061426e9190614565565b816001815181106142825761428161521d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506142e930602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a54565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161434d959493929190614e7c565b600060405180830381600087803b15801561436757600080fd5b505af115801561437b573d6000803e3d6000fd5b505050505050565b6143b030602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a54565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f0000000000000000000000000000000000000000000000000000000000000000426040518863ffffffff1660e01b815260040161443796959493929190614b7d565b6060604051808303818588803b15801561445057600080fd5b505af1158015614464573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061448991906147ec565b5050505050565b60008135905061449f81615622565b92915050565b6000815190506144b481615622565b92915050565b6000813590506144c981615639565b92915050565b6000813590506144de81615650565b92915050565b6000815190506144f381615650565b92915050565b60008135905061450881615667565b92915050565b60008135905061451d8161567e565b92915050565b6000815190506145328161567e565b92915050565b60006020828403121561454e5761454d61527b565b5b600061455c84828501614490565b91505092915050565b60006020828403121561457b5761457a61527b565b5b6000614589848285016144a5565b91505092915050565b6000602082840312156145a8576145a761527b565b5b60006145b6848285016144ba565b91505092915050565b600080604083850312156145d6576145d561527b565b5b60006145e4858286016144ba565b92505060206145f5858286016144cf565b9150509250929050565b600080604083850312156146165761461561527b565b5b600061462485828601614490565b925050602061463585828601614490565b9150509250929050565b6000806000606084860312156146585761465761527b565b5b600061466686828701614490565b935050602061467786828701614490565b92505060406146888682870161450e565b9150509250925092565b600080604083850312156146a9576146a861527b565b5b60006146b785828601614490565b92505060206146c8858286016144cf565b9150509250929050565b600080604083850312156146e9576146e861527b565b5b60006146f785828601614490565b92505060206147088582860161450e565b9150509250929050565b6000602082840312156147285761472761527b565b5b6000614736848285016144cf565b91505092915050565b6000602082840312156147555761475461527b565b5b6000614763848285016144e4565b91505092915050565b6000806000606084860312156147855761478461527b565b5b6000614793868287016144f9565b93505060206147a4868287016144ba565b92505060406147b58682870161450e565b9150509250925092565b6000602082840312156147d5576147d461527b565b5b60006147e38482850161450e565b91505092915050565b6000806000606084860312156148055761480461527b565b5b600061481386828701614523565b935050602061482486828701614523565b925050604061483586828701614523565b9150509250925092565b600061484b8383614875565b60208301905092915050565b614860816150e3565b82525050565b61486f81615089565b82525050565b61487e81615077565b82525050565b61488d81615077565b82525050565b600061489e82614f1d565b6148a88185614f40565b93506148b383614f0d565b8060005b838110156148e45781516148cb888261483f565b97506148d683614f33565b9250506001810190506148b7565b5085935050505092915050565b6148fa8161509b565b82525050565b614909816150f5565b82525050565b600061491a82614f28565b6149248185614f51565b935061493481856020860161512b565b61493d81615280565b840191505092915050565b6000614955602383614f51565b915061496082615291565b604082019050919050565b6000614978602683614f51565b9150614983826152e0565b604082019050919050565b600061499b602283614f51565b91506149a68261532f565b604082019050919050565b60006149be603983614f51565b91506149c98261537e565b604082019050919050565b60006149e1602683614f51565b91506149ec826153cd565b604082019050919050565b6000614a04602883614f51565b9150614a0f8261541c565b604082019050919050565b6000614a27603283614f51565b9150614a328261546b565b604082019050919050565b6000614a4a601d83614f51565b9150614a55826154ba565b602082019050919050565b6000614a6d602883614f51565b9150614a78826154e3565b604082019050919050565b6000614a90602083614f51565b9150614a9b82615532565b602082019050919050565b6000614ab3601883614f51565b9150614abe8261555b565b602082019050919050565b6000614ad6602583614f51565b9150614ae182615584565b604082019050919050565b6000614af9602483614f51565b9150614b04826155d3565b604082019050919050565b614b18816150d9565b82525050565b6000602082019050614b336000830184614884565b92915050565b6000602082019050614b4e6000830184614866565b92915050565b6000604082019050614b696000830185614857565b614b766020830184614b0f565b9392505050565b600060c082019050614b926000830189614884565b614b9f6020830188614b0f565b614bac6040830187614900565b614bb96060830186614900565b614bc66080830185614884565b614bd360a0830184614b0f565b979650505050505050565b6000602082019050614bf360008301846148f1565b92915050565b6000608082019050614c0e6000830187614900565b8181036020830152614c208186614893565b9050614c2f6040830185614884565b614c3c6060830184614b0f565b95945050505050565b60006020820190508181036000830152614c5f818461490f565b905092915050565b60006020820190508181036000830152614c8081614948565b9050919050565b60006020820190508181036000830152614ca08161496b565b9050919050565b60006020820190508181036000830152614cc08161498e565b9050919050565b60006020820190508181036000830152614ce0816149b1565b9050919050565b60006020820190508181036000830152614d00816149d4565b9050919050565b60006020820190508181036000830152614d20816149f7565b9050919050565b60006020820190508181036000830152614d4081614a1a565b9050919050565b60006020820190508181036000830152614d6081614a3d565b9050919050565b60006020820190508181036000830152614d8081614a60565b9050919050565b60006020820190508181036000830152614da081614a83565b9050919050565b60006020820190508181036000830152614dc081614aa6565b9050919050565b60006020820190508181036000830152614de081614ac9565b9050919050565b60006020820190508181036000830152614e0081614aec565b9050919050565b6000602082019050614e1c6000830184614b0f565b92915050565b600060a082019050614e376000830188614b0f565b614e446020830187614900565b8181036040830152614e568186614893565b9050614e656060830185614857565b614e726080830184614b0f565b9695505050505050565b600060a082019050614e916000830188614b0f565b614e9e6020830187614900565b8181036040830152614eb08186614893565b9050614ebf6060830185614884565b614ecc6080830184614b0f565b9695505050505050565b6000606082019050614eeb6000830186614b0f565b614ef86020830185614b0f565b614f056040830184614b0f565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614f6d826150d9565b9150614f78836150d9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614fad57614fac615190565b5b828201905092915050565b6000614fc3826150d9565b9150614fce836150d9565b925082614fde57614fdd6151bf565b5b828204905092915050565b6000614ff4826150d9565b9150614fff836150d9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561503857615037615190565b5b828202905092915050565b600061504e826150d9565b9150615059836150d9565b92508282101561506c5761506b615190565b5b828203905092915050565b6000615082826150b9565b9050919050565b6000615094826150b9565b9050919050565b60008115159050919050565b60006150b282615077565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006150ee82615107565b9050919050565b6000615100826150d9565b9050919050565b600061511282615119565b9050919050565b6000615124826150b9565b9050919050565b60005b8381101561514957808201518184015260208101905061512e565b83811115615158576000848401525b50505050565b6000600282049050600182168061517657607f821691505b6020821081141561518a576151896151ee565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008201527f2067726561746572207468616e207a65726f0000000000000000000000000000602082015250565b7f43616e742074726164652c2074726164652069732064697361626c6564000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e6f20626f747320616c6c6f77656420746f2074726164650000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61562b81615077565b811461563657600080fd5b50565b61564281615089565b811461564d57600080fd5b50565b6156598161509b565b811461566457600080fd5b50565b615670816150a7565b811461567b57600080fd5b50565b615687816150d9565b811461569257600080fd5b5056fea2646970667358221220b9c3bc18fcfea29f2ae1dcd99d54f2e6641a45c744c095e471e67545f67d662264736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103fe5760003560e01c8063893d20e811610213578063b4d95a9311610123578063d15bcf0f116100ab578063e1370dd31161007a578063e1370dd314610ef2578063edcf19b214610f1d578063f2fde38b14610f46578063f7da678514610f6f578063f953cf3a14610f9857610405565b8063d15bcf0f14610e36578063d7d7442f14610e61578063dd62ed3e14610e8a578063ddcf9b9814610ec757610405565b8063bf9b0159116100f2578063bf9b015914610d53578063bf9eb54014610d7e578063cb66453414610da7578063cba0e99614610dd0578063d1294d4c14610e0d57610405565b8063b4d95a9314610c99578063b62496f514610cc2578063b682428e14610cff578063b934f33b14610d2857610405565b80639a7a23d6116101a6578063a6c38f5911610175578063a6c38f5914610bc8578063a7a0745214610bf1578063a8c40a4214610c1a578063a9059cbb14610c45578063b195b83914610c8257610405565b80639a7a23d614610b1e5780639b136da414610b47578063a04bdc8114610b72578063a5ece94114610b9d57610405565b806390f50283116101e257806390f5028314610a7657806395d89b4114610aa157806397385fa914610acc5780639878665f14610af557610405565b8063893d20e8146109ce5780638ace0a9e146109f95780638cd0260c14610a225780638da5cb5b14610a4b57610405565b80634a74bb021161030e5780636f426886116102a15780637a94d54b116102705780637a94d54b146108fd5780637c27b824146109265780637ffb403314610951578063801527ce1461097c5780638628c23f146109a557610405565b80636f4268861461085357806370a082311461087e578063715018a6146108bb57806377bc419e146108d257610405565b806364c16163116102dd57806364c16163146107a95780636573c4df146107d45780636ce5a8a5146107fd5780636df3333a1461082857610405565b80634a74bb02146106ff5780634bd7ace51461072a5780635297defd146107555780635be76f111461078057610405565b806323b872dd11610391578063313ce56711610360578063313ce5671461062c5780633ec7d06e14610657578063487a69051461068057806349bd5a5e146106ab5780634a0e963c146106d657610405565b806323b872dd1461057057806323dbce82146105ad57806327c8f835146105d85780632d03420b1461060357610405565b806314c0eaf9116103cd57806314c0eaf9146104c457806318160ddd146104ef578063220f66961461051a57806322788f861461054557610405565b806306fdde031461040a5780630882a86314610435578063095ea7b31461045e57806313b4a7f41461049b57610405565b3661040557005b600080fd5b34801561041657600080fd5b5061041f610faf565b60405161042c9190614c45565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906147bf565b611041565b005b34801561046a57600080fd5b50610485600480360381019061048091906146d2565b6110c7565b6040516104929190614bde565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd91906145ff565b6110e5565b005b3480156104d057600080fd5b506104d96112c5565b6040516104e69190614e07565b60405180910390f35b3480156104fb57600080fd5b506105046112cf565b6040516105119190614e07565b60405180910390f35b34801561052657600080fd5b5061052f6112d9565b60405161053c9190614bde565b60405180910390f35b34801561055157600080fd5b5061055a6112ec565b6040516105679190614e07565b60405180910390f35b34801561057c57600080fd5b506105976004803603810190610592919061463f565b6112f6565b6040516105a49190614bde565b60405180910390f35b3480156105b957600080fd5b506105c2611474565b6040516105cf9190614e07565b60405180910390f35b3480156105e457600080fd5b506105ed61147e565b6040516105fa9190614b1e565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190614712565b6114a2565b005b34801561063857600080fd5b5061064161153b565b60405161064e9190614e07565b60405180910390f35b34801561066357600080fd5b5061067e60048036038101906106799190614538565b611555565b005b34801561068c57600080fd5b50610695611599565b6040516106a29190614e07565b60405180910390f35b3480156106b757600080fd5b506106c06115a3565b6040516106cd9190614b1e565b60405180910390f35b3480156106e257600080fd5b506106fd60048036038101906106f89190614538565b6115c9565b005b34801561070b57600080fd5b506107146116a0565b6040516107219190614bde565b60405180910390f35b34801561073657600080fd5b5061073f6116b3565b60405161074c9190614e07565b60405180910390f35b34801561076157600080fd5b5061076a6116bd565b6040516107779190614e07565b60405180910390f35b34801561078c57600080fd5b506107a760048036038101906107a29190614592565b6116c7565b005b3480156107b557600080fd5b506107be611793565b6040516107cb9190614e07565b60405180910390f35b3480156107e057600080fd5b506107fb60048036038101906107f691906147bf565b61179d565b005b34801561080957600080fd5b50610812611845565b60405161081f9190614e07565b60405180910390f35b34801561083457600080fd5b5061083d61184f565b60405161084a9190614e07565b60405180910390f35b34801561085f57600080fd5b50610868611859565b6040516108759190614e07565b60405180910390f35b34801561088a57600080fd5b506108a560048036038101906108a09190614538565b611863565b6040516108b29190614e07565b60405180910390f35b3480156108c757600080fd5b506108d06118ac565b005b3480156108de57600080fd5b506108e7611934565b6040516108f49190614e07565b60405180910390f35b34801561090957600080fd5b50610924600480360381019061091f91906147bf565b61193e565b005b34801561093257600080fd5b5061093b6119c4565b6040516109489190614e07565b60405180910390f35b34801561095d57600080fd5b506109666119cd565b6040516109739190614e07565b60405180910390f35b34801561098857600080fd5b506109a3600480360381019061099e9190614712565b6119d7565b005b3480156109b157600080fd5b506109cc60048036038101906109c791906147bf565b611a70565b005b3480156109da57600080fd5b506109e3611af6565b6040516109f09190614b1e565b60405180910390f35b348015610a0557600080fd5b50610a206004803603810190610a1b91906147bf565b611b05565b005b348015610a2e57600080fd5b50610a496004803603810190610a4491906147bf565b611b8b565b005b348015610a5757600080fd5b50610a60611c11565b604051610a6d9190614b1e565b60405180910390f35b348015610a8257600080fd5b50610a8b611c3a565b604051610a989190614e07565b60405180910390f35b348015610aad57600080fd5b50610ab6611c44565b604051610ac39190614c45565b60405180910390f35b348015610ad857600080fd5b50610af36004803603810190610aee91906147bf565b611cd6565b005b348015610b0157600080fd5b50610b1c6004803603810190610b1791906147bf565b611d5c565b005b348015610b2a57600080fd5b50610b456004803603810190610b409190614692565b611de2565b005b348015610b5357600080fd5b50610b5c611efd565b604051610b699190614e07565b60405180910390f35b348015610b7e57600080fd5b50610b87611f07565b604051610b949190614e07565b60405180910390f35b348015610ba957600080fd5b50610bb2611f0d565b604051610bbf9190614b39565b60405180910390f35b348015610bd457600080fd5b50610bef6004803603810190610bea91906145bf565b611f33565b005b348015610bfd57600080fd5b50610c186004803603810190610c1391906147bf565b61200a565b005b348015610c2657600080fd5b50610c2f6120b2565b604051610c3c9190614b1e565b60405180910390f35b348015610c5157600080fd5b50610c6c6004803603810190610c6791906146d2565b6120d8565b604051610c799190614bde565b60405180910390f35b348015610c8e57600080fd5b50610c976120f6565b005b348015610ca557600080fd5b50610cc06004803603810190610cbb9190614538565b6121be565b005b348015610cce57600080fd5b50610ce96004803603810190610ce49190614538565b612295565b604051610cf69190614bde565b60405180910390f35b348015610d0b57600080fd5b50610d266004803603810190610d219190614538565b6122b5565b005b348015610d3457600080fd5b50610d3d6122f9565b604051610d4a9190614b1e565b60405180910390f35b348015610d5f57600080fd5b50610d6861231f565b604051610d759190614e07565b60405180910390f35b348015610d8a57600080fd5b50610da56004803603810190610da09190614538565b612329565b005b348015610db357600080fd5b50610dce6004803603810190610dc99190614538565b6123e9565b005b348015610ddc57600080fd5b50610df76004803603810190610df29190614538565b6124c0565b604051610e049190614bde565b60405180910390f35b348015610e1957600080fd5b50610e346004803603810190610e2f91906147bf565b612516565b005b348015610e4257600080fd5b50610e4b6125bf565b604051610e589190614bde565b60405180910390f35b348015610e6d57600080fd5b50610e886004803603810190610e8391906147bf565b6125d6565b005b348015610e9657600080fd5b50610eb16004803603810190610eac91906145ff565b61265c565b604051610ebe9190614e07565b60405180910390f35b348015610ed357600080fd5b50610edc6126e3565b604051610ee99190614e07565b60405180910390f35b348015610efe57600080fd5b50610f076126ed565b604051610f149190614e07565b60405180910390f35b348015610f2957600080fd5b50610f446004803603810190610f3f91906147bf565b6126f7565b005b348015610f5257600080fd5b50610f6d6004803603810190610f689190614538565b61277d565b005b348015610f7b57600080fd5b50610f966004803603810190610f91919061476c565b612875565b005b348015610fa457600080fd5b50610fad612984565b005b606060018054610fbe9061515e565b80601f0160208091040260200160405190810160405280929190818152602001828054610fea9061515e565b80156110375780601f1061100c57610100808354040283529160200191611037565b820191906000526020600020905b81548152906001019060200180831161101a57829003601f168201915b5050505050905090565b611049612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611067611c11565b73ffffffffffffffffffffffffffffffffffffffff16146110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b490614d87565b60405180910390fd5b8060198190555050565b60006110db6110d4612a4c565b8484612a54565b6001905092915050565b6110ed612a4c565b73ffffffffffffffffffffffffffffffffffffffff1661110b611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115890614d87565b60405180910390fd5b6001601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000602c54905090565b6000600954905090565b602a60009054906101000a900460ff1681565b6000600854905090565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611341612a4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b590614d67565b60405180910390fd5b6113c9848484612c1f565b611469846113d5612a4c565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061141f612a4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114649190615043565b612a54565b600190509392505050565b6000602854905090565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6114aa612a4c565b73ffffffffffffffffffffffffffffffffffffffff166114c8611c11565b73ffffffffffffffffffffffffffffffffffffffff161461151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151590614d87565b60405180910390fd5b80602160006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600a54905090565b603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115d1612a4c565b73ffffffffffffffffffffffffffffffffffffffff166115ef611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163c90614d87565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602a60019054906101000a900460ff1681565b6000601954905090565b6000602454905090565b6116cf612a4c565b73ffffffffffffffffffffffffffffffffffffffff166116ed611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a90614d87565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561178e573d6000803e3d6000fd5b505050565b6000602d54905090565b6117a5612a4c565b73ffffffffffffffffffffffffffffffffffffffff166117c3611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611819576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181090614d87565b60405180910390fd5b8060058190555060646005546009546118329190614fe9565b61183c9190614fb8565b60138190555050565b6000601f54905090565b6000600754905090565b6000602e54905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118b4612a4c565b73ffffffffffffffffffffffffffffffffffffffff166118d2611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191f90614d87565b60405180910390fd5b6119326000613736565b565b6000602654905090565b611946612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611964611c11565b73ffffffffffffffffffffffffffffffffffffffff16146119ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b190614d87565b60405180910390fd5b80601d8190555050565b60006001905090565b6000601d54905090565b6119df612a4c565b73ffffffffffffffffffffffffffffffffffffffff166119fd611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4a90614d87565b60405180910390fd5b80602a60016101000a81548160ff02191690831515021790555050565b611a78612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611a96611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae390614d87565b60405180910390fd5b8060248190555050565b6000611b00611c11565b905090565b611b0d612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611b2b611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7890614d87565b60405180910390fd5b8060288190555050565b611b93612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611bb1611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfe90614d87565b60405180910390fd5b8060228190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000602254905090565b606060028054611c539061515e565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7f9061515e565b8015611ccc5780601f10611ca157610100808354040283529160200191611ccc565b820191906000526020600020905b815481529060010190602001808311611caf57829003601f168201915b5050505050905090565b611cde612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611cfc611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4990614d87565b60405180910390fd5b80601f8190555050565b611d64612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611d82611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcf90614d87565b60405180910390fd5b8060268190555050565b611dea612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611e08611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5590614d87565b60405180910390fd5b603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee690614cc7565b60405180910390fd5b611ef982826137fa565b5050565b6000601b54905090565b600a5481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f3b612a4c565b73ffffffffffffffffffffffffffffffffffffffff16611f59611c11565b73ffffffffffffffffffffffffffffffffffffffff1614611faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa690614d87565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612012612a4c565b73ffffffffffffffffffffffffffffffffffffffff16612030611c11565b73ffffffffffffffffffffffffffffffffffffffff1614612086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207d90614d87565b60405180910390fd5b80600681905550606460065460095461209f9190614fe9565b6120a99190614fb8565b60148190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006120ec6120e5612a4c565b8484612c1f565b6001905092915050565b6120fe612a4c565b73ffffffffffffffffffffffffffffffffffffffff1661211c611c11565b73ffffffffffffffffffffffffffffffffffffffff1614612172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216990614d87565b60405180910390fd5b6000601b819055506000602481905550600060198190555060006022819055506000601d8190555060006026819055506000601f8190555060006028819055506121bc60006119d7565b565b6121c6612a4c565b73ffffffffffffffffffffffffffffffffffffffff166121e4611c11565b73ffffffffffffffffffffffffffffffffffffffff161461223a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223190614d87565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b612331612a4c565b73ffffffffffffffffffffffffffffffffffffffff1661234f611c11565b73ffffffffffffffffffffffffffffffffffffffff16146123a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239c90614d87565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6123f1612a4c565b73ffffffffffffffffffffffffffffffffffffffff1661240f611c11565b73ffffffffffffffffffffffffffffffffffffffff1614612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90614d87565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61251e612a4c565b73ffffffffffffffffffffffffffffffffffffffff1661253c611c11565b73ffffffffffffffffffffffffffffffffffffffff1614612592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258990614d87565b60405180910390fd5b806007819055506103e86007546009546125ac9190614fe9565b6125b69190614fb8565b600a8190555050565b6000602160009054906101000a900460ff16905090565b6125de612a4c565b73ffffffffffffffffffffffffffffffffffffffff166125fc611c11565b73ffffffffffffffffffffffffffffffffffffffff1614612652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264990614d87565b60405180910390fd5b8060088190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602b54905090565b6000601354905090565b6126ff612a4c565b73ffffffffffffffffffffffffffffffffffffffff1661271d611c11565b73ffffffffffffffffffffffffffffffffffffffff1614612773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276a90614d87565b60405180910390fd5b80601b8190555050565b612785612a4c565b73ffffffffffffffffffffffffffffffffffffffff166127a3611c11565b73ffffffffffffffffffffffffffffffffffffffff16146127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f090614d87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286090614c87565b60405180910390fd5b61287281613736565b50565b61287d612a4c565b73ffffffffffffffffffffffffffffffffffffffff1661289b611c11565b73ffffffffffffffffffffffffffffffffffffffff16146128f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e890614d87565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161292c929190614b54565b602060405180830381600087803b15801561294657600080fd5b505af115801561295a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297e919061473f565b50505050565b61298c612a4c565b73ffffffffffffffffffffffffffffffffffffffff166129aa611c11565b73ffffffffffffffffffffffffffffffffffffffff1614612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f790614d87565b60405180910390fd5b6001601b8190555060016019819055506001601d819055506001601f819055506001602481905550600160228190555060016026819055506001602881905550612a4a60016119d7565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612abb90614de7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2b90614ca7565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c129190614e07565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8690614dc7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf690614c67565b60405180910390fd5b60008111612d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3990614d27565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc090614ce7565b60405180910390fd5b60001515602160009054906101000a900460ff1615151415612ec657601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e865750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebc90614d47565b60405180910390fd5b5b60001515601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015612f76575060001515601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612fc157601454821115612fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb790614d07565b60405180910390fd5b5b6000612fcc30611863565b9050600a548110158015612fed5750602a60009054906101000a900460ff16155b80156130475750603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561305f5750602a60019054906101000a900460ff165b1561307d57600a54811061307c57600a54905061307b8161389b565b5b5b600060019050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131245750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613136576000600481905550600090505b60008060008084156134bb5760011515601560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514806131f1575060011515601560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15613231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322890614da7565b60405180910390fd5b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132d85750602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b156133775760006004819055506064602454896132f59190614fe9565b6132ff9190614fb8565b93506064602254896133119190614fe9565b61331b9190614fb8565b915060646026548961332d9190614fe9565b6133379190614fb8565b92506064602854896133499190614fe9565b6133539190614fb8565b90508282856133629190614f62565b61336c9190614f62565b6004819055506134ba565b600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561341e5750602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614155b156134b95760006004819055506064601b548961343b9190614fe9565b6134459190614fb8565b93506064601954896134579190614fe9565b6134619190614fb8565b91506064601d54896134739190614fe9565b61347d9190614fb8565b92506064601f548961348f9190614fe9565b6134999190614fb8565b90508282856134a89190614f62565b6134b29190614f62565b6004819055505b5b5b87876134c79190615043565b600b60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808284868b6135199190615043565b6135239190615043565b61352d9190615043565b6135379190615043565b600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135859190614f62565b92505081905550600082146136b857600454600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135e59190614f62565b9250508190555081602d60008282546135fe9190614f62565b9250508190555082602c60008282546136179190614f62565b9250508190555083602b60008282546136309190614f62565b9250508190555080602e60008282546136499190614f62565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516136af9190614e07565b60405180910390a35b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004548b6137159190615043565b6040516137229190614e07565b60405180910390a350505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602a60006101000a81548160ff0219169083151502179055506138c1602d546139bb565b6138cc602b54613a46565b6138d7602c54613cba565b600047905061390881601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613f0c565b613913602e54613cba565b600047905061394481601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613f0c565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904836040516139739190614e07565b60405180910390a16000602b819055506000602c819055506000602d819055506000602e8190555050506000602a60006101000a81548160ff02191690831515021790555050565b60006002826139ca9190614fb8565b9050600081836139da9190615043565b905060004790506139ea83614131565b600081476139f89190615043565b9050613a048382614383565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051613a3793929190614ed6565b60405180910390a15050505050565b6000600267ffffffffffffffff811115613a6357613a6261524c565b5b604051908082528060200260200182016040528015613a915781602001602082028036833780820191505090505b5090503081600081518110613aa957613aa861521d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613b4b57600080fd5b505afa158015613b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b839190614565565b81600181518110613b9757613b9661521d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613bfe30602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a54565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613c84959493929190614e22565b600060405180830381600087803b158015613c9e57600080fd5b505af1158015613cb2573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613cd757613cd661524c565b5b604051908082528060200260200182016040528015613d055781602001602082028036833780820191505090505b5090503081600081518110613d1d57613d1c61521d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613dbf57600080fd5b505afa158015613dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df79190614565565b81600181518110613e0b57613e0a61521d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e7230602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a54565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ed6959493929190614e7c565b600060405180830381600087803b158015613ef057600080fd5b505af1158015613f04573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613f2957613f2861524c565b5b604051908082528060200260200182016040528015613f575781602001602082028036833780820191505090505b509050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613fc257600080fd5b505afa158015613fd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ffa9190614565565b8160008151811061400e5761400d61521d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061405d5761405c61521d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008430426040518663ffffffff1660e01b81526004016140fa9493929190614bf9565b6000604051808303818588803b15801561411357600080fd5b505af1158015614127573d6000803e3d6000fd5b5050505050505050565b6000600267ffffffffffffffff81111561414e5761414d61524c565b5b60405190808252806020026020018201604052801561417c5781602001602082028036833780820191505090505b50905030816000815181106141945761419361521d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561423657600080fd5b505afa15801561424a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061426e9190614565565b816001815181106142825761428161521d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506142e930602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a54565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161434d959493929190614e7c565b600060405180830381600087803b15801561436757600080fd5b505af115801561437b573d6000803e3d6000fd5b505050505050565b6143b030602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a54565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f000000000000000000000000000000000000000000000000000000000000dead426040518863ffffffff1660e01b815260040161443796959493929190614b7d565b6060604051808303818588803b15801561445057600080fd5b505af1158015614464573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061448991906147ec565b5050505050565b60008135905061449f81615622565b92915050565b6000815190506144b481615622565b92915050565b6000813590506144c981615639565b92915050565b6000813590506144de81615650565b92915050565b6000815190506144f381615650565b92915050565b60008135905061450881615667565b92915050565b60008135905061451d8161567e565b92915050565b6000815190506145328161567e565b92915050565b60006020828403121561454e5761454d61527b565b5b600061455c84828501614490565b91505092915050565b60006020828403121561457b5761457a61527b565b5b6000614589848285016144a5565b91505092915050565b6000602082840312156145a8576145a761527b565b5b60006145b6848285016144ba565b91505092915050565b600080604083850312156145d6576145d561527b565b5b60006145e4858286016144ba565b92505060206145f5858286016144cf565b9150509250929050565b600080604083850312156146165761461561527b565b5b600061462485828601614490565b925050602061463585828601614490565b9150509250929050565b6000806000606084860312156146585761465761527b565b5b600061466686828701614490565b935050602061467786828701614490565b92505060406146888682870161450e565b9150509250925092565b600080604083850312156146a9576146a861527b565b5b60006146b785828601614490565b92505060206146c8858286016144cf565b9150509250929050565b600080604083850312156146e9576146e861527b565b5b60006146f785828601614490565b92505060206147088582860161450e565b9150509250929050565b6000602082840312156147285761472761527b565b5b6000614736848285016144cf565b91505092915050565b6000602082840312156147555761475461527b565b5b6000614763848285016144e4565b91505092915050565b6000806000606084860312156147855761478461527b565b5b6000614793868287016144f9565b93505060206147a4868287016144ba565b92505060406147b58682870161450e565b9150509250925092565b6000602082840312156147d5576147d461527b565b5b60006147e38482850161450e565b91505092915050565b6000806000606084860312156148055761480461527b565b5b600061481386828701614523565b935050602061482486828701614523565b925050604061483586828701614523565b9150509250925092565b600061484b8383614875565b60208301905092915050565b614860816150e3565b82525050565b61486f81615089565b82525050565b61487e81615077565b82525050565b61488d81615077565b82525050565b600061489e82614f1d565b6148a88185614f40565b93506148b383614f0d565b8060005b838110156148e45781516148cb888261483f565b97506148d683614f33565b9250506001810190506148b7565b5085935050505092915050565b6148fa8161509b565b82525050565b614909816150f5565b82525050565b600061491a82614f28565b6149248185614f51565b935061493481856020860161512b565b61493d81615280565b840191505092915050565b6000614955602383614f51565b915061496082615291565b604082019050919050565b6000614978602683614f51565b9150614983826152e0565b604082019050919050565b600061499b602283614f51565b91506149a68261532f565b604082019050919050565b60006149be603983614f51565b91506149c98261537e565b604082019050919050565b60006149e1602683614f51565b91506149ec826153cd565b604082019050919050565b6000614a04602883614f51565b9150614a0f8261541c565b604082019050919050565b6000614a27603283614f51565b9150614a328261546b565b604082019050919050565b6000614a4a601d83614f51565b9150614a55826154ba565b602082019050919050565b6000614a6d602883614f51565b9150614a78826154e3565b604082019050919050565b6000614a90602083614f51565b9150614a9b82615532565b602082019050919050565b6000614ab3601883614f51565b9150614abe8261555b565b602082019050919050565b6000614ad6602583614f51565b9150614ae182615584565b604082019050919050565b6000614af9602483614f51565b9150614b04826155d3565b604082019050919050565b614b18816150d9565b82525050565b6000602082019050614b336000830184614884565b92915050565b6000602082019050614b4e6000830184614866565b92915050565b6000604082019050614b696000830185614857565b614b766020830184614b0f565b9392505050565b600060c082019050614b926000830189614884565b614b9f6020830188614b0f565b614bac6040830187614900565b614bb96060830186614900565b614bc66080830185614884565b614bd360a0830184614b0f565b979650505050505050565b6000602082019050614bf360008301846148f1565b92915050565b6000608082019050614c0e6000830187614900565b8181036020830152614c208186614893565b9050614c2f6040830185614884565b614c3c6060830184614b0f565b95945050505050565b60006020820190508181036000830152614c5f818461490f565b905092915050565b60006020820190508181036000830152614c8081614948565b9050919050565b60006020820190508181036000830152614ca08161496b565b9050919050565b60006020820190508181036000830152614cc08161498e565b9050919050565b60006020820190508181036000830152614ce0816149b1565b9050919050565b60006020820190508181036000830152614d00816149d4565b9050919050565b60006020820190508181036000830152614d20816149f7565b9050919050565b60006020820190508181036000830152614d4081614a1a565b9050919050565b60006020820190508181036000830152614d6081614a3d565b9050919050565b60006020820190508181036000830152614d8081614a60565b9050919050565b60006020820190508181036000830152614da081614a83565b9050919050565b60006020820190508181036000830152614dc081614aa6565b9050919050565b60006020820190508181036000830152614de081614ac9565b9050919050565b60006020820190508181036000830152614e0081614aec565b9050919050565b6000602082019050614e1c6000830184614b0f565b92915050565b600060a082019050614e376000830188614b0f565b614e446020830187614900565b8181036040830152614e568186614893565b9050614e656060830185614857565b614e726080830184614b0f565b9695505050505050565b600060a082019050614e916000830188614b0f565b614e9e6020830187614900565b8181036040830152614eb08186614893565b9050614ebf6060830185614884565b614ecc6080830184614b0f565b9695505050505050565b6000606082019050614eeb6000830186614b0f565b614ef86020830185614b0f565b614f056040830184614b0f565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614f6d826150d9565b9150614f78836150d9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614fad57614fac615190565b5b828201905092915050565b6000614fc3826150d9565b9150614fce836150d9565b925082614fde57614fdd6151bf565b5b828204905092915050565b6000614ff4826150d9565b9150614fff836150d9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561503857615037615190565b5b828202905092915050565b600061504e826150d9565b9150615059836150d9565b92508282101561506c5761506b615190565b5b828203905092915050565b6000615082826150b9565b9050919050565b6000615094826150b9565b9050919050565b60008115159050919050565b60006150b282615077565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006150ee82615107565b9050919050565b6000615100826150d9565b9050919050565b600061511282615119565b9050919050565b6000615124826150b9565b9050919050565b60005b8381101561514957808201518184015260208101905061512e565b83811115615158576000848401525b50505050565b6000600282049050600182168061517657607f821691505b6020821081141561518a576151896151ee565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008201527f2067726561746572207468616e207a65726f0000000000000000000000000000602082015250565b7f43616e742074726164652c2074726164652069732064697361626c6564000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e6f20626f747320616c6c6f77656420746f2074726164650000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61562b81615077565b811461563657600080fd5b50565b61564281615089565b811461564d57600080fd5b50565b6156598161509b565b811461566457600080fd5b50565b615670816150a7565b811461567b57600080fd5b50565b615687816150d9565b811461569257600080fd5b5056fea2646970667358221220b9c3bc18fcfea29f2ae1dcd99d54f2e6641a45c744c095e471e67545f67d662264736f6c63430008070033

Deployed Bytecode Sourcemap

13882:18912:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19199:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31068:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18933:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29227:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18024:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18343:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16024:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21091:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19739:388;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20989:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16106:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27425:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19109:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26391:78;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32597:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16684:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28981:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16059:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20271:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20782:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27239:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18235:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19550:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20575:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32494:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18130:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18460:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13247:94;;;;;;;;;;;;;:::i;:::-;;20886:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31302:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32708:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20475:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30220:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31654:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17826:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31896:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31535:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12596:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20678:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19281:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31417:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31778:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30624:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20373:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14424:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14775:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20135:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19379:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14948:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18589:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29537:279;;;;;;;;;;;;;:::i;:::-;;29103:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14689:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26306:78;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14875:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32116:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30371:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25367:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21198:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32211:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32391:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30100:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18776:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17918:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32013:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31185:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13496:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26988:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29822:270;;;;;;;;;;;;;:::i;:::-;;19199:76;19238:13;19265:5;19258:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19199:76;:::o;31068:111::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31162:9:::1;31150;:21;;;;31068:111:::0;:::o;18933:168::-;19010:4;19030:37;19039:12;:10;:12::i;:::-;19052:7;19060:6;19030:8;:37::i;:::-;19089:4;19082:11;;18933:168;;;;:::o;29227:302::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29370:4:::1;29333:17;:34;29359:6;29333:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;29414:4;29385:17;:26;29403:7;29385:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;29465:4;29429:16;:33;29454:6;29429:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;29508:4;29480:16;:25;29497:7;29480:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;29227:302:::0;;:::o;18024:98::-;18074:7;18104:9;;18097:16;;18024:98;:::o;18343:106::-;18398:7;18428:12;;18421:19;;18343:106;:::o;16024:28::-;;;;;;;;;;;;;:::o;21091:101::-;21142:7;21168:16;;21161:23;;21091:101;:::o;19739:388::-;19871:4;19905:11;:19;19917:6;19905:19;;;;;;;;;;;;;;;:33;19925:12;:10;:12::i;:::-;19905:33;;;;;;;;;;;;;;;;19895:6;:43;;19887:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;19988:36;19998:6;20006:9;20017:6;19988:9;:36::i;:::-;20029:74;20038:6;20046:12;:10;:12::i;:::-;20096:6;20060:11;:19;20072:6;20060:19;;;;;;;;;;;;;;;:33;20080:12;:10;:12::i;:::-;20060:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;20029:8;:74::i;:::-;20115:4;20108:11;;19739:388;;;;;:::o;20989:96::-;21040:7;21070;;21063:14;;20989:96;:::o;16106:81::-;;;:::o;27425:90::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27501:6:::1;27486:12;;:21;;;;;;;;;;;;;;;;;;27425:90:::0;:::o;19109:84::-;19150:7;19176:9;;;;;;;;;;;19169:16;;;;19109:84;:::o;26391:78::-;26453:8;26447:3;;:14;;;;;;;;;;;;;;;;;;26391:78;:::o;32597:105::-;32648:7;32674:20;;32667:27;;32597:105;:::o;16684:28::-;;;;;;;;;;;;;:::o;28981:114::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29083:4:::1;29052:17;:28;29070:9;29052:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;28981:114:::0;:::o;16059:40::-;;;;;;;;;;;;;:::o;20271:96::-;20320:7;20350:9;;20343:16;;20271:96;:::o;20782:98::-;20832:7;20862:10;;20855:17;;20782:98;:::o;27239:178::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27315:18:::1;27336:21;27315:42;;27376:11;27368:29;;:41;27398:10;27368:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27304:113;27239:178:::0;:::o;18235:99::-;18286:7;18316:9;;18309:16;;18235:99;:::o;19550:175::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19646:6:::1;19626:17;:26;;;;19712:3;19694:17;;19681:12;;:30;;;;:::i;:::-;:34;;;;:::i;:::-;19663:15;:52;;;;19550:175:::0;:::o;20575:93::-;20624:7;20654:6;;20647:13;;20575:93;:::o;32494:97::-;32545:7;32571:12;;32564:19;;32494:97;:::o;18130:98::-;18180:7;18210:9;;18203:16;;18130:98;:::o;18460:118::-;18526:7;18552:9;:18;18562:7;18552:18;;;;;;;;;;;;;;;;18545:25;;18460:118;;;:::o;13247:94::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13312:21:::1;13330:1;13312:9;:21::i;:::-;13247:94::o:0;20886:96::-;20937:7;20967;;20960:14;;20886:96;:::o;31302:108::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31393:9:::1;31385:6;:17;;;;31302:108:::0;:::o;32708:83::-;32755:7;32782:1;32775:8;;32708:83;:::o;20475:93::-;20524:7;20554:6;;20547:13;;20475:93;:::o;30220:113::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30317:8:::1;30293:21;;:32;;;;;;;;;;;;;;;;;;30220:113:::0;:::o;31654:112::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31749:9:::1;31737:10;:21;;;;31654:112:::0;:::o;17826:86::-;17867:7;17897;:5;:7::i;:::-;17890:14;;17826:86;:::o;31896:111::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31990:9:::1;31981:7;:18;;;;31896:111:::0;:::o;31535:113::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31631:9:::1;31619:10;:21;;;;31535:113:::0;:::o;12596:87::-;12642:7;12669:6;;;;;;;;;;;12662:13;;12596:87;:::o;20678:98::-;20728:7;20758:10;;20751:17;;20678:98;:::o;19281:88::-;19322:13;19354:7;19347:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19281:88;:::o;31417:108::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31508:9:::1;31500:6;:17;;;;31417:108:::0;:::o;31778:111::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31872:9:::1;31863:7;:18;;;;31778:111:::0;:::o;30624:242::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30731:13:::1;;;;;;;;;;;30723:21;;:4;:21;;;;30715:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;30817:41;30846:4;30852:5;30817:28;:41::i;:::-;30624:242:::0;;:::o;20373:96::-;20422:7;20452:9;;20445:16;;20373:96;:::o;14424:71::-;;;;:::o;14775:93::-;;;;;;;;;;;;;:::o;20135:130::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20252:5:::1;20226:10;:23;20237:11;20226:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;20135:130:::0;;:::o;19379:164::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19467:6:::1;19451:13;:22;;;;19525:3;19511:13;;19498:12;;:26;;;;:::i;:::-;:30;;;;:::i;:::-;19484:11;:44;;;;19379:164:::0;:::o;14948:65::-;;;;;;;;;;;;;:::o;18589:176::-;18669:4;18689:40;18699:12;:10;:12::i;:::-;18712:9;18722:6;18689:9;:40::i;:::-;18751:4;18744:11;;18589:176;;;;:::o;29537:279::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29615:1:::1;29603:9;:13;;;;29639:1;29627:10;:13;;;;29662:1;29651:9;:12;;;;29686:1;29674:10;:13;;;;29706:1;29698:6;:9;;;;29728:1;29718:7;:11;;;;29748:1;29740:6;:9;;;;29770:1;29760:7;:11;;;;29782:24;29800:5;29782:17;:24::i;:::-;29537:279::o:0;29103:116::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29206:5:::1;29176:17;:27;29194:8;29176:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;29103:116:::0;:::o;14689:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;26306:78::-;26368:8;26362:3;;:14;;;;;;;;;;;;;;;;;;26306:78;:::o;14875:66::-;;;;;;;;;;;;;:::o;32116:89::-;32160:7;32186:11;;32179:18;;32116:89;:::o;30371:118::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30470:10:::1;30443:16;;:38;;;;;;;;;;;;;;;;;;30371:118:::0;:::o;25367:123::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25471:4:::1;25439:17;:29;25457:10;25439:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;25367:123:::0;:::o;21198:118::-;21255:4;21282:17;:26;21300:7;21282:26;;;;;;;;;;;;;;;;;;;;;;;;;21275:33;;21198:118;;;:::o;32211:174::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32297:6:::1;32282:12;:21;;;;32363:4;32350:12;;32337;;:25;;;;:::i;:::-;:30;;;;:::i;:::-;32314:20;:53;;;;32211:174:::0;:::o;32391:97::-;32442:4;32465:12;;;;;;;;;;;32458:19;;32391:97;:::o;30100:112::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30190:12:::1;30171:16;:31;;;;30100:112:::0;:::o;18776:148::-;18859:7;18889:11;:18;18901:5;18889:18;;;;;;;;;;;;;;;:27;18908:7;18889:27;;;;;;;;;;;;;;;;18882:34;;18776:148;;;;:::o;17918:99::-;17969:7;17999:9;;17992:16;;17918:99;:::o;32013:97::-;32061:7;32087:15;;32080:22;;32013:97;:::o;31185:111::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31279:9:::1;31268;:20;;;;31185:111:::0;:::o;13496:192::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13605:1:::1;13585:22;;:8;:22;;;;13577:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13661:19;13671:8;13661:9;:19::i;:::-;13496:192:::0;:::o;26988:243::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27181:12:::1;:21;;;27203:11;27216:6;27181:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26988:243:::0;;;:::o;29822:270::-;12827:12;:10;:12::i;:::-;12816:23;;:7;:5;:7::i;:::-;:23;;;12808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29889:1:::1;29877:9;:13;;;;29913:1;29901:9;:13;;;;29934:1;29925:6;:10;;;;29954:1;29946:6;:9;;;;29981:1;29968:10;:14;;;;30006:1;29993:10;:14;;;;30028:1;30018:7;:11;;;;30049:1;30040:7;:10;;;;30061:23;30079:4;30061:17;:23::i;:::-;29822:270::o:0;8556:98::-;8609:7;8636:10;8629:17;;8556:98;:::o;28613:322::-;28722:1;28705:19;;:5;:19;;;;28697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28797:1;28778:21;;:7;:21;;;;28770:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28875:6;28845:11;:18;28857:5;28845:18;;;;;;;;;;;;;;;:27;28864:7;28845:27;;;;;;;;;;;;;;;:36;;;;28907:7;28891:32;;28900:5;28891:32;;;28916:6;28891:32;;;;;;:::i;:::-;;;;;;;;28613:322;;;:::o;21324:3446::-;21438:1;21422:18;;:4;:18;;;;21414:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21509:1;21495:16;;:2;:16;;;;21487:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21579:1;21570:6;:10;21562:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;21645:21;21669:9;:15;21679:4;21669:15;;;;;;;;;;;;;;;;21645:39;;21720:6;21703:13;:23;;21695:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;21799:5;21783:21;;:12;;;;;;;;;;;:21;;;21780:141;;;21828:17;:21;21846:2;21828:21;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;21853:17;:23;21871:4;21853:23;;;;;;;;;;;;;;;;;;;;;;;;;21828:48;21820:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;21780:141;21957:5;21934:28;;:17;:21;21952:2;21934:21;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;:62;;;;;21991:5;21966:30;;:17;:23;21984:4;21966:23;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;21934:62;21931:163;;;22026:11;;22016:6;:21;;22008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;21931:163;22104:25;22132:24;22150:4;22132:9;:24::i;:::-;22104:52;;22190:20;;22170:17;:40;;:66;;;;;22220:16;;;;;;;;;;;22219:17;22170:66;:96;;;;;22253:13;;;;;;;;;;;22245:21;;:4;:21;;;;22170:96;:126;;;;;22275:21;;;;;;;;;;;22170:126;22167:352;;;22340:20;;22319:17;:41;22316:188;;22405:20;;22385:40;;22448:36;22466:17;22448;:36::i;:::-;22316:188;22167:352;22535:13;22551:4;22535:20;;22601:17;:23;22619:4;22601:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;22628:17;:21;22646:2;22628:21;;;;;;;;;;;;;;;;;;;;;;;;;22601:48;22598:159;;;22686:1;22670:13;:17;;;;22717:5;22706:16;;22598:159;22771:17;22807;22874;22947;22986:8;22983:1219;;;23083:4;23063:24;;:10;:16;23074:4;23063:16;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;:46;;;;23105:4;23089:20;;:10;:14;23100:2;23089:14;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;23063:46;23060:127;;;23133:34;;;;;;;;;;:::i;:::-;;;;;;;;23060:127;23241:25;:29;23267:2;23241:29;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;;23288:7;;;;;;;;;;;23274:22;;:2;:22;;;;23241:55;23237:930;;;23341:1;23325:13;:17;;;;23401:3;23390:10;;23381:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;23369:35;;23463:3;23452:10;;23443:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;23431:35;;23522:3;23514:7;;23505:6;:16;;;;:::i;:::-;:20;;;;:::i;:::-;23493:32;;23581:3;23573:7;;23564:6;:16;;;;:::i;:::-;:20;;;;:::i;:::-;23552:32;;23651:9;23639;23627;:21;;;;:::i;:::-;:33;;;;:::i;:::-;23611:13;:49;;;;23237:930;;;23734:25;:31;23760:4;23734:31;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;23785:7;;;;;;;;;;;23769:24;;:4;:24;;;;23734:59;23731:436;;;23852:1;23836:13;:17;;;;23907:3;23897:9;;23888:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;23876:34;;23964:3;23954:9;;23945:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;23933:34;;24018:3;24011:6;;24002;:15;;;;:::i;:::-;:19;;;;:::i;:::-;23990:31;;24072:3;24065:6;;24056;:15;;;;:::i;:::-;:19;;;;:::i;:::-;24044:31;;24138:9;24126;24114;:21;;;;:::i;:::-;:33;;;;:::i;:::-;24098:13;:49;;;;23731:436;23237:930;22983:1219;24252:6;24236:13;:22;;;;:::i;:::-;24218:9;:15;24228:4;24218:15;;;;;;;;;;;;;;;:40;;;;24333:9;24323;24311;24299;24290:6;:18;;;;:::i;:::-;:30;;;;:::i;:::-;:42;;;;:::i;:::-;:52;;;;:::i;:::-;24273:9;:13;24283:2;24273:13;;;;;;;;;;;;;;;;:69;;;;;;;:::i;:::-;;;;;;;;24373:1;24360:9;:14;24357:323;;24410:13;;24382:9;:24;24400:4;24382:24;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;24481:9;24468;;:22;;;;;;;:::i;:::-;;;;;;;;24518:9;24505;;:22;;;;;;;:::i;:::-;;;;;;;;24555:9;24542;;:22;;;;;;;:::i;:::-;;;;;;;;24592:9;24579;;:22;;;;;;;:::i;:::-;;;;;;;;24635:4;24612:44;;24621:4;24612:44;;;24642:13;;24612:44;;;;;;:::i;:::-;;;;;;;;24357:323;24714:2;24699:39;;24708:4;24699:39;;;24724:13;;24717:6;:20;;;;:::i;:::-;24699:39;;;;;;:::i;:::-;;;;;;;;21393:3377;;;;;;;21324:3446;;;:::o;13696:173::-;13752:16;13771:6;;;;;;;;;;;13752:25;;13797:8;13788:6;;:17;;;;;;;;;;;;;;;;;;13852:8;13821:40;;13842:8;13821:40;;;;;;;;;;;;13741:128;13696:173;:::o;30872:188::-;30989:5;30955:25;:31;30981:4;30955:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;31046:5;31012:40;;31040:4;31012:40;;;;;;;;;;;;30872:188;;:::o;24776:584::-;16791:4;16772:16;;:23;;;;;;;;;;;;;;;;;;24856:25:::1;24871:9;;24856:14;:25::i;:::-;24892:30;24912:9;;24892:19;:30::i;:::-;24933:21;24944:9;;24933:10;:21::i;:::-;24965:22;24990:21;24965:46;;25022:30;25033:14;25048:3;;;;;;;;;;;25022:10;:30::i;:::-;25063:21;25074:9;;25063:10;:21::i;:::-;25095:27;25125:21;25095:51;;25157:35;25168:19;25188:3;;;;;;;;;;;25157:10;:35::i;:::-;25212:44;25242:13;25212:44;;;;;;:::i;:::-;;;;;;;;25279:1;25267:9;:13;;;;25303:1;25291:9;:13;;;;25327:1;25315:9;:13;;;;25351:1;25339:9;:13;;;;24845:515;;16825:5:::0;16806:16;;:24;;;;;;;;;;;;;;;;;;24776:584;:::o;27523:388::-;27585:12;27618:1;27600:15;:19;;;;:::i;:::-;27585:34;;27624:17;27662:4;27644:15;:22;;;;:::i;:::-;27624:42;;27671:22;27696:21;27671:46;;27724:22;27741:4;27724:16;:22::i;:::-;27751:18;27797:14;27772:21;:40;;;;:::i;:::-;27751:61;;27820:35;27833:9;27844:10;27820:12;:35::i;:::-;27865:41;27880:4;27885:10;27896:9;27865:41;;;;;;;;:::i;:::-;;;;;;;;27580:331;;;;27523:388;:::o;25496:399::-;25559:21;25597:1;25583:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25559:40;;25622:4;25604;25609:1;25604:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25642:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25632:4;25637:1;25632:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;25661:49;25678:4;25693:7;;;;;;;;;;;25703:6;25661:8;:49::i;:::-;25721:7;;;;;;;;;;;:58;;;25785:6;25797:1;25833:4;25843:16;;;;;;;;;;;25865:15;25721:164;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25548:347;25496:399;:::o;25903:397::-;25957:21;25995:1;25981:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25957:40;;26020:4;26002;26007:1;26002:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26040:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26030:4;26035:1;26030:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;26059:49;26076:4;26091:7;;;;;;;;;;;26101:6;26059:8;:49::i;:::-;26119:7;;;;;;;;;;;:58;;;26183:6;26195:1;26231:4;26249;26260:15;26119:161;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25946:354;25903:397;:::o;26475:505::-;26613:21;26651:1;26637:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26613:40;;26674:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26664:4;26669:1;26664:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;26709:11;26699:4;26704:1;26699:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;26759:7;;;;;;;;;;;:58;;;26825:9;26850:1;26899:4;26926;26946:15;26759:213;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26544:436;26475:505;;:::o;27919:397::-;27978:21;28016:1;28002:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27978:40;;28041:4;28023;28028:1;28023:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28061:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28051:4;28056:1;28051:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;28080:54;28097:4;28112:7;;;;;;;;;;;28122:11;28080:8;:54::i;:::-;28145:7;;;;;;;;;;;:58;;;28209:11;28226:1;28262:4;28280;28291:15;28145:166;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27973:343;27919:397;:::o;28328:277::-;28401:54;28418:4;28433:7;;;;;;;;;;;28443:11;28401:8;:54::i;:::-;28462:7;;;;;;;;;;;:23;;;28492:9;28516:4;28527:11;28544:1;28551;28558:11;28580:15;28462:138;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28328:277;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:137::-;655:5;686:6;680:13;671:22;;702:30;726:5;702:30;:::i;:::-;601:137;;;;:::o;744:165::-;803:5;841:6;828:20;819:29;;857:46;897:5;857:46;:::i;:::-;744:165;;;;:::o;915:139::-;961:5;999:6;986:20;977:29;;1015:33;1042:5;1015:33;:::i;:::-;915:139;;;;:::o;1060:143::-;1117:5;1148:6;1142:13;1133:22;;1164:33;1191:5;1164:33;:::i;:::-;1060:143;;;;:::o;1209:329::-;1268:6;1317:2;1305:9;1296:7;1292:23;1288:32;1285:119;;;1323:79;;:::i;:::-;1285:119;1443:1;1468:53;1513:7;1504:6;1493:9;1489:22;1468:53;:::i;:::-;1458:63;;1414:117;1209:329;;;;:::o;1544:351::-;1614:6;1663:2;1651:9;1642:7;1638:23;1634:32;1631:119;;;1669:79;;:::i;:::-;1631:119;1789:1;1814:64;1870:7;1861:6;1850:9;1846:22;1814:64;:::i;:::-;1804:74;;1760:128;1544:351;;;;:::o;1901:345::-;1968:6;2017:2;2005:9;1996:7;1992:23;1988:32;1985:119;;;2023:79;;:::i;:::-;1985:119;2143:1;2168:61;2221:7;2212:6;2201:9;2197:22;2168:61;:::i;:::-;2158:71;;2114:125;1901:345;;;;:::o;2252:484::-;2325:6;2333;2382:2;2370:9;2361:7;2357:23;2353:32;2350:119;;;2388:79;;:::i;:::-;2350:119;2508:1;2533:61;2586:7;2577:6;2566:9;2562:22;2533:61;:::i;:::-;2523:71;;2479:125;2643:2;2669:50;2711:7;2702:6;2691:9;2687:22;2669:50;:::i;:::-;2659:60;;2614:115;2252:484;;;;;:::o;2742:474::-;2810:6;2818;2867:2;2855:9;2846:7;2842:23;2838:32;2835:119;;;2873:79;;:::i;:::-;2835:119;2993:1;3018:53;3063:7;3054:6;3043:9;3039:22;3018:53;:::i;:::-;3008:63;;2964:117;3120:2;3146:53;3191:7;3182:6;3171:9;3167:22;3146:53;:::i;:::-;3136:63;;3091:118;2742:474;;;;;:::o;3222:619::-;3299:6;3307;3315;3364:2;3352:9;3343:7;3339:23;3335:32;3332:119;;;3370:79;;:::i;:::-;3332:119;3490:1;3515:53;3560:7;3551:6;3540:9;3536:22;3515:53;:::i;:::-;3505:63;;3461:117;3617:2;3643:53;3688:7;3679:6;3668:9;3664:22;3643:53;:::i;:::-;3633:63;;3588:118;3745:2;3771:53;3816:7;3807:6;3796:9;3792:22;3771:53;:::i;:::-;3761:63;;3716:118;3222:619;;;;;:::o;3847:468::-;3912:6;3920;3969:2;3957:9;3948:7;3944:23;3940:32;3937:119;;;3975:79;;:::i;:::-;3937:119;4095:1;4120:53;4165:7;4156:6;4145:9;4141:22;4120:53;:::i;:::-;4110:63;;4066:117;4222:2;4248:50;4290:7;4281:6;4270:9;4266:22;4248:50;:::i;:::-;4238:60;;4193:115;3847:468;;;;;:::o;4321:474::-;4389:6;4397;4446:2;4434:9;4425:7;4421:23;4417:32;4414:119;;;4452:79;;:::i;:::-;4414:119;4572:1;4597:53;4642:7;4633:6;4622:9;4618:22;4597:53;:::i;:::-;4587:63;;4543:117;4699:2;4725:53;4770:7;4761:6;4750:9;4746:22;4725:53;:::i;:::-;4715:63;;4670:118;4321:474;;;;;:::o;4801:323::-;4857:6;4906:2;4894:9;4885:7;4881:23;4877:32;4874:119;;;4912:79;;:::i;:::-;4874:119;5032:1;5057:50;5099:7;5090:6;5079:9;5075:22;5057:50;:::i;:::-;5047:60;;5003:114;4801:323;;;;:::o;5130:345::-;5197:6;5246:2;5234:9;5225:7;5221:23;5217:32;5214:119;;;5252:79;;:::i;:::-;5214:119;5372:1;5397:61;5450:7;5441:6;5430:9;5426:22;5397:61;:::i;:::-;5387:71;;5343:125;5130:345;;;;:::o;5481:661::-;5579:6;5587;5595;5644:2;5632:9;5623:7;5619:23;5615:32;5612:119;;;5650:79;;:::i;:::-;5612:119;5770:1;5795:66;5853:7;5844:6;5833:9;5829:22;5795:66;:::i;:::-;5785:76;;5741:130;5910:2;5936:61;5989:7;5980:6;5969:9;5965:22;5936:61;:::i;:::-;5926:71;;5881:126;6046:2;6072:53;6117:7;6108:6;6097:9;6093:22;6072:53;:::i;:::-;6062:63;;6017:118;5481:661;;;;;:::o;6148:329::-;6207:6;6256:2;6244:9;6235:7;6231:23;6227:32;6224:119;;;6262:79;;:::i;:::-;6224:119;6382:1;6407:53;6452:7;6443:6;6432:9;6428:22;6407:53;:::i;:::-;6397:63;;6353:117;6148:329;;;;:::o;6483:663::-;6571:6;6579;6587;6636:2;6624:9;6615:7;6611:23;6607:32;6604:119;;;6642:79;;:::i;:::-;6604:119;6762:1;6787:64;6843:7;6834:6;6823:9;6819:22;6787:64;:::i;:::-;6777:74;;6733:128;6900:2;6926:64;6982:7;6973:6;6962:9;6958:22;6926:64;:::i;:::-;6916:74;;6871:129;7039:2;7065:64;7121:7;7112:6;7101:9;7097:22;7065:64;:::i;:::-;7055:74;;7010:129;6483:663;;;;;:::o;7152:179::-;7221:10;7242:46;7284:3;7276:6;7242:46;:::i;:::-;7320:4;7315:3;7311:14;7297:28;;7152:179;;;;:::o;7337:147::-;7432:45;7471:5;7432:45;:::i;:::-;7427:3;7420:58;7337:147;;:::o;7490:142::-;7593:32;7619:5;7593:32;:::i;:::-;7588:3;7581:45;7490:142;;:::o;7638:108::-;7715:24;7733:5;7715:24;:::i;:::-;7710:3;7703:37;7638:108;;:::o;7752:118::-;7839:24;7857:5;7839:24;:::i;:::-;7834:3;7827:37;7752:118;;:::o;7906:732::-;8025:3;8054:54;8102:5;8054:54;:::i;:::-;8124:86;8203:6;8198:3;8124:86;:::i;:::-;8117:93;;8234:56;8284:5;8234:56;:::i;:::-;8313:7;8344:1;8329:284;8354:6;8351:1;8348:13;8329:284;;;8430:6;8424:13;8457:63;8516:3;8501:13;8457:63;:::i;:::-;8450:70;;8543:60;8596:6;8543:60;:::i;:::-;8533:70;;8389:224;8376:1;8373;8369:9;8364:14;;8329:284;;;8333:14;8629:3;8622:10;;8030:608;;;7906:732;;;;:::o;8644:109::-;8725:21;8740:5;8725:21;:::i;:::-;8720:3;8713:34;8644:109;;:::o;8759:147::-;8854:45;8893:5;8854:45;:::i;:::-;8849:3;8842:58;8759:147;;:::o;8912:364::-;9000:3;9028:39;9061:5;9028:39;:::i;:::-;9083:71;9147:6;9142:3;9083:71;:::i;:::-;9076:78;;9163:52;9208:6;9203:3;9196:4;9189:5;9185:16;9163:52;:::i;:::-;9240:29;9262:6;9240:29;:::i;:::-;9235:3;9231:39;9224:46;;9004:272;8912:364;;;;:::o;9282:366::-;9424:3;9445:67;9509:2;9504:3;9445:67;:::i;:::-;9438:74;;9521:93;9610:3;9521:93;:::i;:::-;9639:2;9634:3;9630:12;9623:19;;9282:366;;;:::o;9654:::-;9796:3;9817:67;9881:2;9876:3;9817:67;:::i;:::-;9810:74;;9893:93;9982:3;9893:93;:::i;:::-;10011:2;10006:3;10002:12;9995:19;;9654:366;;;:::o;10026:::-;10168:3;10189:67;10253:2;10248:3;10189:67;:::i;:::-;10182:74;;10265:93;10354:3;10265:93;:::i;:::-;10383:2;10378:3;10374:12;10367:19;;10026:366;;;:::o;10398:::-;10540:3;10561:67;10625:2;10620:3;10561:67;:::i;:::-;10554:74;;10637:93;10726:3;10637:93;:::i;:::-;10755:2;10750:3;10746:12;10739:19;;10398:366;;;:::o;10770:::-;10912:3;10933:67;10997:2;10992:3;10933:67;:::i;:::-;10926:74;;11009:93;11098:3;11009:93;:::i;:::-;11127:2;11122:3;11118:12;11111:19;;10770:366;;;:::o;11142:::-;11284:3;11305:67;11369:2;11364:3;11305:67;:::i;:::-;11298:74;;11381:93;11470:3;11381:93;:::i;:::-;11499:2;11494:3;11490:12;11483:19;;11142:366;;;:::o;11514:::-;11656:3;11677:67;11741:2;11736:3;11677:67;:::i;:::-;11670:74;;11753:93;11842:3;11753:93;:::i;:::-;11871:2;11866:3;11862:12;11855:19;;11514:366;;;:::o;11886:::-;12028:3;12049:67;12113:2;12108:3;12049:67;:::i;:::-;12042:74;;12125:93;12214:3;12125:93;:::i;:::-;12243:2;12238:3;12234:12;12227:19;;11886:366;;;:::o;12258:::-;12400:3;12421:67;12485:2;12480:3;12421:67;:::i;:::-;12414:74;;12497:93;12586:3;12497:93;:::i;:::-;12615:2;12610:3;12606:12;12599:19;;12258:366;;;:::o;12630:::-;12772:3;12793:67;12857:2;12852:3;12793:67;:::i;:::-;12786:74;;12869:93;12958:3;12869:93;:::i;:::-;12987:2;12982:3;12978:12;12971:19;;12630:366;;;:::o;13002:::-;13144:3;13165:67;13229:2;13224:3;13165:67;:::i;:::-;13158:74;;13241:93;13330:3;13241:93;:::i;:::-;13359:2;13354:3;13350:12;13343:19;;13002:366;;;:::o;13374:::-;13516:3;13537:67;13601:2;13596:3;13537:67;:::i;:::-;13530:74;;13613:93;13702:3;13613:93;:::i;:::-;13731:2;13726:3;13722:12;13715:19;;13374:366;;;:::o;13746:::-;13888:3;13909:67;13973:2;13968:3;13909:67;:::i;:::-;13902:74;;13985:93;14074:3;13985:93;:::i;:::-;14103:2;14098:3;14094:12;14087:19;;13746:366;;;:::o;14118:118::-;14205:24;14223:5;14205:24;:::i;:::-;14200:3;14193:37;14118:118;;:::o;14242:222::-;14335:4;14373:2;14362:9;14358:18;14350:26;;14386:71;14454:1;14443:9;14439:17;14430:6;14386:71;:::i;:::-;14242:222;;;;:::o;14470:254::-;14579:4;14617:2;14606:9;14602:18;14594:26;;14630:87;14714:1;14703:9;14699:17;14690:6;14630:87;:::i;:::-;14470:254;;;;:::o;14730:348::-;14859:4;14897:2;14886:9;14882:18;14874:26;;14910:79;14986:1;14975:9;14971:17;14962:6;14910:79;:::i;:::-;14999:72;15067:2;15056:9;15052:18;15043:6;14999:72;:::i;:::-;14730:348;;;;;:::o;15084:807::-;15333:4;15371:3;15360:9;15356:19;15348:27;;15385:71;15453:1;15442:9;15438:17;15429:6;15385:71;:::i;:::-;15466:72;15534:2;15523:9;15519:18;15510:6;15466:72;:::i;:::-;15548:80;15624:2;15613:9;15609:18;15600:6;15548:80;:::i;:::-;15638;15714:2;15703:9;15699:18;15690:6;15638:80;:::i;:::-;15728:73;15796:3;15785:9;15781:19;15772:6;15728:73;:::i;:::-;15811;15879:3;15868:9;15864:19;15855:6;15811:73;:::i;:::-;15084:807;;;;;;;;;:::o;15897:210::-;15984:4;16022:2;16011:9;16007:18;15999:26;;16035:65;16097:1;16086:9;16082:17;16073:6;16035:65;:::i;:::-;15897:210;;;;:::o;16113:720::-;16348:4;16386:3;16375:9;16371:19;16363:27;;16400:79;16476:1;16465:9;16461:17;16452:6;16400:79;:::i;:::-;16526:9;16520:4;16516:20;16511:2;16500:9;16496:18;16489:48;16554:108;16657:4;16648:6;16554:108;:::i;:::-;16546:116;;16672:72;16740:2;16729:9;16725:18;16716:6;16672:72;:::i;:::-;16754;16822:2;16811:9;16807:18;16798:6;16754:72;:::i;:::-;16113:720;;;;;;;:::o;16839:313::-;16952:4;16990:2;16979:9;16975:18;16967:26;;17039:9;17033:4;17029:20;17025:1;17014:9;17010:17;17003:47;17067:78;17140:4;17131:6;17067:78;:::i;:::-;17059:86;;16839:313;;;;:::o;17158:419::-;17324:4;17362:2;17351:9;17347:18;17339:26;;17411:9;17405:4;17401:20;17397:1;17386:9;17382:17;17375:47;17439:131;17565:4;17439:131;:::i;:::-;17431:139;;17158:419;;;:::o;17583:::-;17749:4;17787:2;17776:9;17772:18;17764:26;;17836:9;17830:4;17826:20;17822:1;17811:9;17807:17;17800:47;17864:131;17990:4;17864:131;:::i;:::-;17856:139;;17583:419;;;:::o;18008:::-;18174:4;18212:2;18201:9;18197:18;18189:26;;18261:9;18255:4;18251:20;18247:1;18236:9;18232:17;18225:47;18289:131;18415:4;18289:131;:::i;:::-;18281:139;;18008:419;;;:::o;18433:::-;18599:4;18637:2;18626:9;18622:18;18614:26;;18686:9;18680:4;18676:20;18672:1;18661:9;18657:17;18650:47;18714:131;18840:4;18714:131;:::i;:::-;18706:139;;18433:419;;;:::o;18858:::-;19024:4;19062:2;19051:9;19047:18;19039:26;;19111:9;19105:4;19101:20;19097:1;19086:9;19082:17;19075:47;19139:131;19265:4;19139:131;:::i;:::-;19131:139;;18858:419;;;:::o;19283:::-;19449:4;19487:2;19476:9;19472:18;19464:26;;19536:9;19530:4;19526:20;19522:1;19511:9;19507:17;19500:47;19564:131;19690:4;19564:131;:::i;:::-;19556:139;;19283:419;;;:::o;19708:::-;19874:4;19912:2;19901:9;19897:18;19889:26;;19961:9;19955:4;19951:20;19947:1;19936:9;19932:17;19925:47;19989:131;20115:4;19989:131;:::i;:::-;19981:139;;19708:419;;;:::o;20133:::-;20299:4;20337:2;20326:9;20322:18;20314:26;;20386:9;20380:4;20376:20;20372:1;20361:9;20357:17;20350:47;20414:131;20540:4;20414:131;:::i;:::-;20406:139;;20133:419;;;:::o;20558:::-;20724:4;20762:2;20751:9;20747:18;20739:26;;20811:9;20805:4;20801:20;20797:1;20786:9;20782:17;20775:47;20839:131;20965:4;20839:131;:::i;:::-;20831:139;;20558:419;;;:::o;20983:::-;21149:4;21187:2;21176:9;21172:18;21164:26;;21236:9;21230:4;21226:20;21222:1;21211:9;21207:17;21200:47;21264:131;21390:4;21264:131;:::i;:::-;21256:139;;20983:419;;;:::o;21408:::-;21574:4;21612:2;21601:9;21597:18;21589:26;;21661:9;21655:4;21651:20;21647:1;21636:9;21632:17;21625:47;21689:131;21815:4;21689:131;:::i;:::-;21681:139;;21408:419;;;:::o;21833:::-;21999:4;22037:2;22026:9;22022:18;22014:26;;22086:9;22080:4;22076:20;22072:1;22061:9;22057:17;22050:47;22114:131;22240:4;22114:131;:::i;:::-;22106:139;;21833:419;;;:::o;22258:::-;22424:4;22462:2;22451:9;22447:18;22439:26;;22511:9;22505:4;22501:20;22497:1;22486:9;22482:17;22475:47;22539:131;22665:4;22539:131;:::i;:::-;22531:139;;22258:419;;;:::o;22683:222::-;22776:4;22814:2;22803:9;22799:18;22791:26;;22827:71;22895:1;22884:9;22880:17;22871:6;22827:71;:::i;:::-;22683:222;;;;:::o;22911:847::-;23182:4;23220:3;23209:9;23205:19;23197:27;;23234:71;23302:1;23291:9;23287:17;23278:6;23234:71;:::i;:::-;23315:80;23391:2;23380:9;23376:18;23367:6;23315:80;:::i;:::-;23442:9;23436:4;23432:20;23427:2;23416:9;23412:18;23405:48;23470:108;23573:4;23564:6;23470:108;:::i;:::-;23462:116;;23588:80;23664:2;23653:9;23649:18;23640:6;23588:80;:::i;:::-;23678:73;23746:3;23735:9;23731:19;23722:6;23678:73;:::i;:::-;22911:847;;;;;;;;:::o;23764:831::-;24027:4;24065:3;24054:9;24050:19;24042:27;;24079:71;24147:1;24136:9;24132:17;24123:6;24079:71;:::i;:::-;24160:80;24236:2;24225:9;24221:18;24212:6;24160:80;:::i;:::-;24287:9;24281:4;24277:20;24272:2;24261:9;24257:18;24250:48;24315:108;24418:4;24409:6;24315:108;:::i;:::-;24307:116;;24433:72;24501:2;24490:9;24486:18;24477:6;24433:72;:::i;:::-;24515:73;24583:3;24572:9;24568:19;24559:6;24515:73;:::i;:::-;23764:831;;;;;;;;:::o;24601:442::-;24750:4;24788:2;24777:9;24773:18;24765:26;;24801:71;24869:1;24858:9;24854:17;24845:6;24801:71;:::i;:::-;24882:72;24950:2;24939:9;24935:18;24926:6;24882:72;:::i;:::-;24964;25032:2;25021:9;25017:18;25008:6;24964:72;:::i;:::-;24601:442;;;;;;:::o;25130:132::-;25197:4;25220:3;25212:11;;25250:4;25245:3;25241:14;25233:22;;25130:132;;;:::o;25268:114::-;25335:6;25369:5;25363:12;25353:22;;25268:114;;;:::o;25388:99::-;25440:6;25474:5;25468:12;25458:22;;25388:99;;;:::o;25493:113::-;25563:4;25595;25590:3;25586:14;25578:22;;25493:113;;;:::o;25612:184::-;25711:11;25745:6;25740:3;25733:19;25785:4;25780:3;25776:14;25761:29;;25612:184;;;;:::o;25802:169::-;25886:11;25920:6;25915:3;25908:19;25960:4;25955:3;25951:14;25936:29;;25802:169;;;;:::o;25977:305::-;26017:3;26036:20;26054:1;26036:20;:::i;:::-;26031:25;;26070:20;26088:1;26070:20;:::i;:::-;26065:25;;26224:1;26156:66;26152:74;26149:1;26146:81;26143:107;;;26230:18;;:::i;:::-;26143:107;26274:1;26271;26267:9;26260:16;;25977:305;;;;:::o;26288:185::-;26328:1;26345:20;26363:1;26345:20;:::i;:::-;26340:25;;26379:20;26397:1;26379:20;:::i;:::-;26374:25;;26418:1;26408:35;;26423:18;;:::i;:::-;26408:35;26465:1;26462;26458:9;26453:14;;26288:185;;;;:::o;26479:348::-;26519:7;26542:20;26560:1;26542:20;:::i;:::-;26537:25;;26576:20;26594:1;26576:20;:::i;:::-;26571:25;;26764:1;26696:66;26692:74;26689:1;26686:81;26681:1;26674:9;26667:17;26663:105;26660:131;;;26771:18;;:::i;:::-;26660:131;26819:1;26816;26812:9;26801:20;;26479:348;;;;:::o;26833:191::-;26873:4;26893:20;26911:1;26893:20;:::i;:::-;26888:25;;26927:20;26945:1;26927:20;:::i;:::-;26922:25;;26966:1;26963;26960:8;26957:34;;;26971:18;;:::i;:::-;26957:34;27016:1;27013;27009:9;27001:17;;26833:191;;;;:::o;27030:96::-;27067:7;27096:24;27114:5;27096:24;:::i;:::-;27085:35;;27030:96;;;:::o;27132:104::-;27177:7;27206:24;27224:5;27206:24;:::i;:::-;27195:35;;27132:104;;;:::o;27242:90::-;27276:7;27319:5;27312:13;27305:21;27294:32;;27242:90;;;:::o;27338:109::-;27388:7;27417:24;27435:5;27417:24;:::i;:::-;27406:35;;27338:109;;;:::o;27453:126::-;27490:7;27530:42;27523:5;27519:54;27508:65;;27453:126;;;:::o;27585:77::-;27622:7;27651:5;27640:16;;27585:77;;;:::o;27668:134::-;27726:9;27759:37;27790:5;27759:37;:::i;:::-;27746:50;;27668:134;;;:::o;27808:121::-;27866:9;27899:24;27917:5;27899:24;:::i;:::-;27886:37;;27808:121;;;:::o;27935:126::-;27985:9;28018:37;28049:5;28018:37;:::i;:::-;28005:50;;27935:126;;;:::o;28067:113::-;28117:9;28150:24;28168:5;28150:24;:::i;:::-;28137:37;;28067:113;;;:::o;28186:307::-;28254:1;28264:113;28278:6;28275:1;28272:13;28264:113;;;28363:1;28358:3;28354:11;28348:18;28344:1;28339:3;28335:11;28328:39;28300:2;28297:1;28293:10;28288:15;;28264:113;;;28395:6;28392:1;28389:13;28386:101;;;28475:1;28466:6;28461:3;28457:16;28450:27;28386:101;28235:258;28186:307;;;:::o;28499:320::-;28543:6;28580:1;28574:4;28570:12;28560:22;;28627:1;28621:4;28617:12;28648:18;28638:81;;28704:4;28696:6;28692:17;28682:27;;28638:81;28766:2;28758:6;28755:14;28735:18;28732:38;28729:84;;;28785:18;;:::i;:::-;28729:84;28550:269;28499:320;;;:::o;28825:180::-;28873:77;28870:1;28863:88;28970:4;28967:1;28960:15;28994:4;28991:1;28984:15;29011:180;29059:77;29056:1;29049:88;29156:4;29153:1;29146:15;29180:4;29177:1;29170:15;29197:180;29245:77;29242:1;29235:88;29342:4;29339:1;29332:15;29366:4;29363:1;29356:15;29383:180;29431:77;29428:1;29421:88;29528:4;29525:1;29518:15;29552:4;29549:1;29542:15;29569:180;29617:77;29614:1;29607:88;29714:4;29711:1;29704:15;29738:4;29735:1;29728:15;29878:117;29987:1;29984;29977:12;30001:102;30042:6;30093:2;30089:7;30084:2;30077:5;30073:14;30069:28;30059:38;;30001:102;;;:::o;30109:222::-;30249:34;30245:1;30237:6;30233:14;30226:58;30318:5;30313:2;30305:6;30301:15;30294:30;30109:222;:::o;30337:225::-;30477:34;30473:1;30465:6;30461:14;30454:58;30546:8;30541:2;30533:6;30529:15;30522:33;30337:225;:::o;30568:221::-;30708:34;30704:1;30696:6;30692:14;30685:58;30777:4;30772:2;30764:6;30760:15;30753:29;30568:221;:::o;30795:244::-;30935:34;30931:1;30923:6;30919:14;30912:58;31004:27;30999:2;30991:6;30987:15;30980:52;30795:244;:::o;31045:225::-;31185:34;31181:1;31173:6;31169:14;31162:58;31254:8;31249:2;31241:6;31237:15;31230:33;31045:225;:::o;31276:227::-;31416:34;31412:1;31404:6;31400:14;31393:58;31485:10;31480:2;31472:6;31468:15;31461:35;31276:227;:::o;31509:237::-;31649:34;31645:1;31637:6;31633:14;31626:58;31718:20;31713:2;31705:6;31701:15;31694:45;31509:237;:::o;31752:179::-;31892:31;31888:1;31880:6;31876:14;31869:55;31752:179;:::o;31937:227::-;32077:34;32073:1;32065:6;32061:14;32054:58;32146:10;32141:2;32133:6;32129:15;32122:35;31937:227;:::o;32170:182::-;32310:34;32306:1;32298:6;32294:14;32287:58;32170:182;:::o;32358:174::-;32498:26;32494:1;32486:6;32482:14;32475:50;32358:174;:::o;32538:224::-;32678:34;32674:1;32666:6;32662:14;32655:58;32747:7;32742:2;32734:6;32730:15;32723:32;32538:224;:::o;32768:223::-;32908:34;32904:1;32896:6;32892:14;32885:58;32977:6;32972:2;32964:6;32960:15;32953:31;32768:223;:::o;32997:122::-;33070:24;33088:5;33070:24;:::i;:::-;33063:5;33060:35;33050:63;;33109:1;33106;33099:12;33050:63;32997:122;:::o;33125:138::-;33206:32;33232:5;33206:32;:::i;:::-;33199:5;33196:43;33186:71;;33253:1;33250;33243:12;33186:71;33125:138;:::o;33269:116::-;33339:21;33354:5;33339:21;:::i;:::-;33332:5;33329:32;33319:60;;33375:1;33372;33365:12;33319:60;33269:116;:::o;33391:148::-;33477:37;33508:5;33477:37;:::i;:::-;33470:5;33467:48;33457:76;;33529:1;33526;33519:12;33457:76;33391:148;:::o;33545:122::-;33618:24;33636:5;33618:24;:::i;:::-;33611:5;33608:35;33598:63;;33657:1;33654;33647:12;33598:63;33545:122;:::o

Swarm Source

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