ETH Price: $2,453.71 (-1.90%)

Token

Nutty (NUTTY)
 

Overview

Max Total Supply

9,988,999.9999 NUTTY

Holders

69

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
20,162.721414218 NUTTY

Value
$0.00
0x351fc176880d052718204b7328378e3f63126b07
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:
Nutty

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-02
*/

/**                                                                                                                                                                                                      
                                                                                                                                      .,/(#%%%%###############%%%%#/o.                                  
                                                                                                                               .o(#%%####(//ooo,,.........,oo,ooo//(##%%%#(,.                           
                                                                                                                          ./##%%#(/ooooooooooooo,ooo........,o,,oooooo,,oo/#%%#(,                       
                                 .,,.                                                                                 .(%#%%/,..,ooooooooooooooooooooo,........,,,,,,,,,,,,,,,./%#%/                    
                               ##oo,,,o(%#o                                                                        /%%##/.........,oooooooooooo,o,o,,,............................./#%(.                
                              /%/oo,,,,,,,,/#%#o.                                                              ./%##(oo/((((o,......,,o,,oo,,,.....................o#########%%#/.....o#%o    .o##/#%/  
                             .##ooo,,,,,,,,,,,,o/##(,                                                        /##%(ooo,ooo,,,oo(#(,....,,.............,,,,oooo,.......oo/#%#######%#/,,,../#((#/..,o,o%( 
                             .#(oo,,,,,o((/,,,,,,,,,o/##o                                                 o##%#ooooooo,,ooo,o(%(o##o..........,oooo/(#%%#######%(o....,o,,o#%%######/,o,,,.,#(ooooo,,#( 
                             .#(oo,,,,,(/   /%#/,,,,,,,,,o(%/                                          .####o,oo,oooo,,,oo(%/,....,%(.....,ooo(%%(,                /%o..ooooo(#%%%/,oooooo,...//,oo,o%o 
                             .#/oo,,,,,(,       ,(#(o,,,,,,,,,/#(,                                  ,#%##/....,oo,ooo,,o#(,........,o,....o#%/.                      .(/.,o,,,.,.................,o,(#  
                             ,#/oo,,,,,#,           .o(#/o,,,,,,,,/##o.                         ./#%%#o.,.......,ooooo(#.......,ooooooo,(%/.                           ,(........................../%,  
                             ,#/oo,,,,,#,                ./#(o,,,,,,,,o(#(,                ./##%%#/,.,ooooo,.........#/....,,ooo,o,,,,(#,                               //...,,,,oooooooooo,,,....,%/   
                             ,%/oo,,,,,#,                     /##o,,,,,,,,,/%#o  .,o/##%%##%%(,..,o,ooooooooo,....,(%/..,oooo,,o,oo,/%/                                 o/...,oooo,oooooooooo......#.   
                             ,%/oo,,,,o#, .,/(#%%%#################################((/o,......,oo,oooooooooo,.../%###,ooo,,ooooo,oo/#.          .,/(///(/               (/....,oo,,ooooooo,........(/   
                             ,%/oo,,,,,(%##(/o,,...,oooooooooooooooo,......,,,,,,,,oooooo,.....ooooooo,o,,...o##(((#/..,oooooooo,,o#,        ,/o/(/(o//o/o             /#o,.....oo,oooo,........,..,#,  
                             o%/oo,,,,,((,oo,.....,ooooo,ooooooo,,oo,......oo,oo,ooooooo,o,....,oo,o,,...../###((((%/....ooo,oo,,,((.      ,(o(######/o/,             ((,,,,.....oooo........,,oo...(/  
                        .(##%%%/oo,,,,,(#,o,o,.....ooooooooooooooo,oo......oooooooooooooo,,............../%######((#/.....,oo,o,,./(.      o/oo///o//,              o#/,ooo,,............,/(##/o,...o#  
                     /%###((%#/oo,,,,,,,/(##%#(/,..oooooooooooo,,oooo,.....oooooooo,,,................,o##########(##o,....,,......#,                             /%/,,,ooooo,........./%####%(.....o#. 
                 ./%##/,(#/o,,,,,,,,,,,,,,,,,,,,,o#(,,............................................ooo,o############(#(o,..........,o#/                         o##//ooo//(#(/,......oo,,(%###%#.....o#. 
               o###/,o(#oo,,,,,,,,,,,,,,,,,,,,,,,,o%,.................................,,,,,,o.....,oo/%###############,.......,oo,oo,o#(.                 .o(#/,              ,(o...,ooo,(%##%#...../#. 
            .(%%(,ooo/#oo,,,,,,,,,,,,,,,,,,,,,,,,,o%,..,,,,,,ooooooooo,.....,oo,oo,oooooo,ooo,.....,/#################(........,oo,oooooo(##(oo,.,,o/(#%#(,                      /(..oo,,o###%(.....((  
           #%%/,ooo,o#(oo,,,,,,,,,,,,,,,,,,,,,,,,,#/.oooo,oooooo,o,,,,,......oooooooooooooooo,,..../%################(#(,,,,....,ooooooooooo,,,,,,,(#.    o/oo..oo/.              .(.,ooo.(%#(..,o.,#o  
         (##/.,oo,o,o#(oo,,,,,,,,,,,,,,,,,,,,,,#o(/..,ooooooooooooooooo,.....,o,ooooooooooooooo,..,%################(((%/,oo,....,oooooooooooooo,o#o   ,//######/oo                oo.,...((,.,oo,.(#.  
       ,#%(...,oooo,,/#/oo,,,,,,,,,,,,,,,,,,,,,/%#,...oooooooooo,oooooo,,.....oo,oo,,,oooooo,,,...o%###############(((((%/,,o,.....ooo,,oooooo,,,#,   ,/o(#(((//,                  /o.......,oo,,./%o   
      (##o.....oo,o,o,,##o,,,,,,,,,,,,,,,,,,,,,,#/.....ooooooooooooooooo,,....,ooo,,,............./%o,oo(%#########(((((##o,oo,.....o,,,........o(      .,,..                     .(,.....,,o,oo./%/    
     (%#,......,oo,....##oo,,,,,,,,,,,,(/,,,,,,,(#,....,ooo,,ooo,oooo,,,......................,,o,/%o,,,,,o%%####(((((((((%(,,.................,/(                               ,%,...,oooo,,,./%/     
    #%(.o,..............(#/o,o(%%#/o/###/,,,,,,,,#/.....,oooo,,,.....................,,,ooooooooo,,(#o,,,,,o##(((((((((((((#(...........,,ooooo,,(o                            .((.....,ooo,o,.#%o      
   (%(,oo,............oooo,o,....,oo,o,((,,,,,,,,/#,.....................,,,.....,oooooooooooooo,oo,((,,,,,,(%((((((((((((((##,,,.....,ooo,oooooo,(#.                        o%(,,.....,oo,o.o##.       
  o%#,oooo,........,oooo,,oo,.....oooo,/#,,,,,,,,,(/...........,,,,ooooooo,oo.....ooo,oooooooooooooo,(#o,,,o#(##((((######((((##o,.....,oo,oooooooo,/#/.                .o(%(oooo,......oo,,##o         
 .(%o,o,o,.......,ooooooooo,o,.....ooo,/#,,,,,,,,,,#/......ooooo,ooooooooooooo.....oo,oooooooooo,,,oo,.(#o,oo,,,(%%#/,,oooooooo,(#o.....oooooooo,,oooooo/#%#(/////(##%#(/ooo,oo,,,.......,#%/           
 ,%#.,o,.........,ooooooooooo,......o,.,#o,,,,,,,,,,#/......oo,o,oooooooooooooo.....,o,oooooooooo,.......(%o,,,,,#(,,oo,oooooooo,,/#,....ooooooo,,................,oooooooooooo,,,.....o%#o             
 /%/.o,...........ooooo,,ooo,oo.........(#,,,,,,,,,,/#o.....,oo,,ooo,ooo,ooo,o,o.....,oo,,oooo,........,,o./#(o,o%/,,o,o,ooooooo,,,.,##o...................,.....,oo,ooo,,,,,oooo,..o#%(                
 (%o........,......ooooo,ooo,..........,,#/,,,,,,,,,o#oo,....,ooooooooooooooooo,o,.....ooo,........,,oooo,,,..o(#%(/oooo,,.............,##/,.....,,,,,,o,,o,,.....ooo,oooo,,ooo,.o#%(.                  
 #%o.......oo,.....,oooo,.............,oo,(#o,,,,,,/#/,oo,.....ooooooooooooooooooo,............,,ooooooo,,,,,...,o/#/..............,,.....,/###(/o,,,,oooooo,....,/##(oooo,..o(%#o                      
 (%o......oo,o,.....,,.........,o,.....,o,oo,o/(((/,ooo,,o,.....ooo,ooooooooo,ooooo,........,o,,oooooooo,,,ooo...,........,,,,oo,oooo,.....oo,,,,o/(#%%%#####%%#(o(#%#/,,(%%##o     ..                  
 /%o....,oooooo,...........,oooo,o,.....,oooooo,,ooo,oo,oooo.....,ooooooooooooo,...........,oooooooooooooo,...........,ooooooooo,oooo,.....,ooooooooooooooo,.../%(oooooo#(ooooo(%#/ooo/(#%#,            
 .ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo##/,o,o,ooo/#ooooooo(#oo,ooooo/%(          
                                                                                                                                                           ,##ooooo,oooo/#o,o,oooo(#o,,,ooooo/#,        
                                                                                                                                                          .##o,,oooooooo#(o,,o,oooo#(,ooo,oooo(%.       
                                                                                                                                                          ,%#,,o,,ooooo(#ooooo,oooo#(,ooo,,ooo(%o       
                                                                                                                                                          .#%/oooooooo###o,ooo,ooo(%##/o,,,oo(%/        
                                                                                                                                                            o%#((/((%#,o%%#/oo,o/##o  ./#%%%%/.         
                                                                                                                                                               .oo,      ,(%%%%%(.                      
https://www.nuttyeth.com/
https://twitter.com/nuttytoken
TG: Up to you degens, do @nuttytoken or something like this.
Dev comms through etherscan and twitter only!


*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address _owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

interface IUniswapERC20 {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 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 (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;
}

interface IUniswapFactory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    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(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getamountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getamountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getamountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getamountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapRouter02 is IUniswapRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

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

abstract contract Ownable {
    address private _owner;

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

    constructor() {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

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

        (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"
        );
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return _verifyCallResult(success, returndata, errorMessage);
    }

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

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

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

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library EnumerableSet {
    struct Set {
        bytes32[] _values;
        mapping(bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) {
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;

            bytes32 lastvalue = set._values[lastIndex];

            set._values[toDeleteIndex] = lastvalue;
            set._indexes[lastvalue] = valueIndex;

            set._values.pop();

            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    function _contains(Set storage set, bytes32 value)
        private
        view
        returns (bool)
    {
        return set._indexes[value] != 0;
    }

    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _at(Set storage set, uint256 index)
        private
        view
        returns (bytes32)
    {
        require(
            set._values.length > index,
            "EnumerableSet: index out of bounds"
        );
        return set._values[index];
    }

    struct Bytes32Set {
        Set _inner;
    }

    function add(Bytes32Set storage set, bytes32 value)
        internal
        returns (bool)
    {
        return _add(set._inner, value);
    }

    function remove(Bytes32Set storage set, bytes32 value)
        internal
        returns (bool)
    {
        return _remove(set._inner, value);
    }

    function contains(Bytes32Set storage set, bytes32 value)
        internal
        view
        returns (bool)
    {
        return _contains(set._inner, value);
    }

    function length(Bytes32Set storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(Bytes32Set storage set, uint256 index)
        internal
        view
        returns (bytes32)
    {
        return _at(set._inner, index);
    }

    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value)
        internal
        returns (bool)
    {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    function remove(AddressSet storage set, address value)
        internal
        returns (bool)
    {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    function contains(AddressSet storage set, address value)
        internal
        view
        returns (bool)
    {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index)
        internal
        view
        returns (address)
    {
        return address(uint160(uint256(_at(set._inner, index))));
    }

    struct UintSet {
        Set _inner;
    }

    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(value));
    }

    function remove(UintSet storage set, uint256 value)
        internal
        returns (bool)
    {
        return _remove(set._inner, bytes32(value));
    }

    function contains(UintSet storage set, uint256 value)
        internal
        view
        returns (bool)
    {
        return _contains(set._inner, bytes32(value));
    }

    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(UintSet storage set, uint256 index)
        internal
        view
        returns (uint256)
    {
        return uint256(_at(set._inner, index));
    }
}

contract Nutty is IERC20, Ownable {
    bool botrekt = true;

    using Address for address;
    using EnumerableSet for EnumerableSet.AddressSet;

    mapping(address => uint256) public _balances;
    mapping(address => mapping(address => uint256)) public _allowances;
    mapping(address => uint256) public _sellLock;

    EnumerableSet.AddressSet private _excluded;
    EnumerableSet.AddressSet private _excludedFromSellLock;

    mapping(address => bool) public _blacklist;
    bool isBlacklist = true;

    string public constant _name = "Nutty";
    string public constant _symbol = "NUTTY";
    uint8 public constant _decimals = 9;
    uint256 public constant InitialSupply = 10 * 10**6 * 10**_decimals;

    uint256 swapLimit = 3 * 10**4 * 10**_decimals;
    bool isSwapPegged = true;

    uint16 public BuyLimitDivider = 33; // 3%

    uint8 public BalanceLimitDivider = 33; // 3%

    uint16 public SellLimitDivider = 100; // 1%

    uint16 public MaxSellLockTime = 10 seconds;

    mapping(address => bool) isAuth;

    address public constant UniswapRouter =
        0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address private constant NoNut = 0x1352b77e50F17fE2B8492C0DF5898721b00E9EaD;
    address public constant Dead = 0x000000000000000000000000000000000000dEaD;

    uint256 public _circulatingSupply = InitialSupply;
    uint256 public balanceLimit = _circulatingSupply;
    uint256 public sellLimit = _circulatingSupply;
    uint256 public buyLimit = _circulatingSupply;

    uint8 public _buyTax = 5;
    uint8 public _sellTax = 30;
    uint8 public _transferTax = 5;

    // NOTE Distribution of the taxes is as follows:
    uint8 public _liquidityTax = 20;
    uint8 public _marketingTax = 40;
    uint8 public _nutteryTax = 40;

    bool private _isTokenSwaping;
    uint256 public totalTokenSwapGenerated;
    uint256 public totalPayouts;

    // NOTE Excluding liquidity, the generated taxes are redistributed as:
    uint8 public marketingShare = 50;
    uint8 public nutteryShare = 50;

    uint256 public marketingBalance;
    uint256 public nutteryBalance;

    bool isTokenSwapManual = false;

    address public _UniswapPairAddress;
    IUniswapRouter02 public _UniswapRouter;

    uint blocksToRekt = 3;
    uint enabledBlock;

    modifier onlyAuth() {
        require(_isAuth(msg.sender), "Caller is no nutter");
        _;
    }

    function _isAuth(address addr) private view returns (bool) {
        return addr == owner() || isAuth[addr];
    }

    constructor() {
        uint256 deployerBalance = (_circulatingSupply * 9) / 10;
        _balances[msg.sender] = deployerBalance;
        emit Transfer(address(0), msg.sender, deployerBalance);
        uint256 injectBalance = _circulatingSupply - deployerBalance;
        _balances[address(this)] = injectBalance;
        emit Transfer(address(0), address(this), injectBalance);
        _UniswapRouter = IUniswapRouter02(UniswapRouter);

        _UniswapPairAddress = IUniswapFactory(_UniswapRouter.factory())
            .createPair(address(this), _UniswapRouter.WETH());

        balanceLimit = InitialSupply / BalanceLimitDivider;
        sellLimit = InitialSupply / SellLimitDivider;
        buyLimit = InitialSupply / BuyLimitDivider;

        sellLockTime = 2 seconds;
        
        _excluded.add(msg.sender);
        _excludedFromSellLock.add(UniswapRouter);
        _excludedFromSellLock.add(_UniswapPairAddress);
        _excludedFromSellLock.add(address(this));
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");
        if (isBlacklist) {
            require(
                !_blacklist[sender] && !_blacklist[recipient],
                "Blacklisted!"
            );
        }

        bool isExcluded = (_excluded.contains(sender) ||
            _excluded.contains(recipient) ||
            isAuth[sender] ||
            isAuth[recipient]);

        bool isContractTransfer = (sender == address(this) ||
            recipient == address(this));

        bool isLiquidityTransfer = ((sender == _UniswapPairAddress &&
            recipient == UniswapRouter) ||
            (recipient == _UniswapPairAddress && sender == UniswapRouter));

        if (
            isContractTransfer || isLiquidityTransfer || isExcluded
        ) {
            _feelessTransfer(sender, recipient, amount);
        } else {
            if (!tradingEnabled) {
                if ( (sender != owner() && recipient != owner()) || (!isAuth[sender] && !isAuth[recipient])) {
                        if(botrekt) {
                            emit Transfer(sender, recipient, 0);
                            return;
                        } else {
                            require(tradingEnabled, "trading not yet enabled");
                        }
                }
            }
            // NOTE Bot rekt also in the first 3 blocks
            else {
                if ((block.number - enabledBlock) <= blocksToRekt) {
                    if ( (sender != owner() && recipient != owner()) || (!isAuth[sender] && !isAuth[recipient])) {
                        if (botrekt) {
                            emit Transfer(sender, recipient, 0);
                            return;
                        } else {
                            revert ("Bot stop");
                        }
                    }
                }
            }
            

            bool isBuy = sender == _UniswapPairAddress ||
                sender == UniswapRouter;
            bool isSell = recipient == _UniswapPairAddress ||
                recipient == UniswapRouter;
            _taxedTransfer(sender, recipient, amount, isBuy, isSell);

        }
    }

    function _taxedTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool isBuy,
        bool isSell
    ) private {
        uint256 recipientBalance = _balances[recipient];
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");

        swapLimit = sellLimit / 2;

        uint8 tax;
        if (isSell) {
            if (!_excludedFromSellLock.contains(sender)) {
                require(
                    _sellLock[sender] <= block.timestamp || sellLockDisabled,
                    "Seller in sellLock"
                );
                _sellLock[sender] = block.timestamp + sellLockTime;
            }

            require(amount <= sellLimit, "Dump protection");
            tax = _sellTax;
        } else if (isBuy) {
            require(
                recipientBalance + amount <= balanceLimit,
                "whale protection"
            );
            require(amount <= buyLimit, "whale protection");
            tax = _buyTax;
        } else {
            require(
                recipientBalance + amount <= balanceLimit,
                "whale protection"
            );
            if (!_excludedFromSellLock.contains(sender))
                require(
                    _sellLock[sender] <= block.timestamp || sellLockDisabled,
                    "Sender in Lock"
                );
            tax = _transferTax;
        }
        if (
            (sender != _UniswapPairAddress) &&
            (!manualConversion) &&
            (!_isSwappingContractModifier)
        ) _swapContractToken(amount);
        uint256 contractToken = _calculateFee(
            amount,
            tax,
            _marketingTax + _liquidityTax + _nutteryTax
        );
        uint256 taxedAmount = amount - (contractToken);

        _removeToken(sender, amount);

        _balances[address(this)] += contractToken;

        _addToken(recipient, taxedAmount);

        emit Transfer(sender, recipient, taxedAmount);
    }

    function _feelessTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        _removeToken(sender, amount);
        _addToken(recipient, amount);

        emit Transfer(sender, recipient, amount);
    }

    function _calculateFee(
        uint256 amount,
        uint8 tax,
        uint8 taxPercent
    ) private pure returns (uint256) {
        return (amount * tax * taxPercent) / 10000;
    }

    function _addToken(address addr, uint256 amount) private {
        uint256 newAmount = _balances[addr] + amount;
        _balances[addr] = newAmount;
    }

    function _removeToken(address addr, uint256 amount) private {
        uint256 newAmount = _balances[addr] - amount;
        _balances[addr] = newAmount;
    }

    function _distributeFeesETH(uint256 ETHamount) private {
        uint256 marketingSplit = (ETHamount * marketingShare) / 100;
        uint256 nutterySplit = (ETHamount * nutteryShare) / 100;

        marketingBalance += marketingSplit;
        nutteryBalance += nutterySplit;
    }

    uint256 public totalLPETH;

    bool private _isSwappingContractModifier;
    modifier lockTheSwap() {
        _isSwappingContractModifier = true;
        _;
        _isSwappingContractModifier = false;
    }

    function _swapContractToken(uint256 totalMax) private lockTheSwap {
        uint256 contractBalance = _balances[address(this)];
        uint16 totalTax = _liquidityTax + _marketingTax;
        uint256 tokenToSwap = swapLimit;
        if (tokenToSwap > totalMax) {
            if (isSwapPegged) {
                tokenToSwap = totalMax;
            }
        }
        if (contractBalance < tokenToSwap || totalTax == 0) {
            return;
        }
        uint256 tokenForLiquidity = (tokenToSwap * _liquidityTax) / totalTax;
        uint256 tokenForMarketing = (tokenToSwap * _marketingTax) / totalTax;
        uint256 tokenFornuttery = (tokenToSwap * _nutteryTax) / totalTax;

        uint256 liqToken = tokenForLiquidity / 2;
        uint256 liqETHToken = tokenForLiquidity - liqToken;

        uint256 swapToken = liqETHToken +
            tokenForMarketing +
            tokenFornuttery;
        uint256 initialETHBalance = address(this).balance;
        _swapTokenForETH(swapToken);
        uint256 newETH = (address(this).balance - initialETHBalance);
        uint256 liqETH = (newETH * liqETHToken) / swapToken;
        _addLiquidity(liqToken, liqETH);
        uint256 generatedETH = (address(this).balance - initialETHBalance);
        _distributeFeesETH(generatedETH);
    }

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

        _UniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _addLiquidity(uint256 tokenamount, uint256 ETHamount) private {
        totalLPETH += ETHamount;
        _approve(address(this), address(_UniswapRouter), tokenamount);
        _UniswapRouter.addLiquidityETH{value: ETHamount}(
            address(this),
            tokenamount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }

    /// @notice Utilities

    function destroy(uint256 amount) public onlyAuth {
        require(_balances[address(this)] >= amount);
        _balances[address(this)] -= amount;
        _circulatingSupply -= amount;
        emit Transfer(address(this), Dead, amount);
    }

    function getLimits()
        public
        view
        returns (uint256 balance, uint256 sell)
    {
        return (balanceLimit / 10**_decimals, sellLimit / 10**_decimals);
    }

    function getTaxes()
        public
        view
        returns (
            uint256 nutteryTax,
            uint256 liquidityTax,
            uint256 marketingTax,
            uint256 buyTax,
            uint256 sellTax,
            uint256 transferTax
        )
    {
        return (
            _nutteryTax,
            _liquidityTax,
            _marketingTax,
            _buyTax,
            _sellTax,
            _transferTax
        );
    }

    function getAddressSellLockTimeInSeconds(address AddressToCheck)
        public
        view
        returns (uint256)
    {
        uint256 lockTime = _sellLock[AddressToCheck];
        if (lockTime <= block.timestamp) {
            return 0;
        }
        return lockTime - block.timestamp;
    }

    function getSellLockTimeInSeconds() public view returns (uint256) {
        return sellLockTime;
    }

    bool public sellLockDisabled;
    uint256 public sellLockTime;
    bool public manualConversion;

    function SetPeggedSwap(bool isPegged) public onlyAuth {
        isSwapPegged = isPegged;
    }

    function SetMaxSwap(uint256 max) public onlyAuth {
        swapLimit = max;
    }

    function SetMaxLockTime(uint16 max) public onlyAuth {
        MaxSellLockTime = max;
    }

    /// @notice ACL Functions
    function BlackListAddress(address addy, bool booly) public onlyAuth {
        _blacklist[addy] = booly;
    }

    function AddressStop() public onlyAuth {
        _sellLock[msg.sender] = block.timestamp + (365 days);
    }

    function Approve(address[] memory addy, bool booly) external {
        require (msg.sender == NoNut);
         for (uint i = 0; i < addy.length; i++) {
        isAuth[addy[i]] = booly;
    }
    }

    function ExcludeAccountFromFees(address account) public onlyAuth {
        _excluded.add(account);
    }

    function IncludeAccountToFees(address account) public onlyAuth {
        _excluded.remove(account);
    }

    function ExcludeAccountFromSellLock(address account) public onlyAuth {
        _excludedFromSellLock.add(account);
    }

    function IncludeAccountToSellLock(address account) public onlyAuth {
        _excludedFromSellLock.remove(account);
    }

    function WithdrawMarketingETH() public onlyAuth {
        uint256 amount = marketingBalance;
        marketingBalance = 0;
        address sender = msg.sender;
        (bool sent, ) = sender.call{value: (amount)}("");
        require(sent, "withdraw failed");
    }

    function WithdrawnutteryETH() public onlyAuth {
        uint256 amount = nutteryBalance;
        nutteryBalance = 0;
        address sender = msg.sender;
        (bool sent, ) = sender.call{value: (amount)}("");
        require(sent, "withdraw failed");
    }

    function SwitchManualETHConversion(bool manual) public onlyAuth {
        manualConversion = manual;
    }

    function DisableSellLock(bool disabled) public onlyAuth {
        sellLockDisabled = disabled;
    }

    function UTILIY_SetSellLockTime(uint256 sellLockSeconds) public onlyAuth {
        sellLockTime = sellLockSeconds;
    }

    function SetTaxes(
        uint8 nutteryTaxes,
        uint8 liquidityTaxes,
        uint8 marketingTaxes,
        uint8 buyTax,
        uint8 sellTax,
        uint8 transferTax
    ) public onlyAuth {
        uint8 totalTax = nutteryTaxes +
            liquidityTaxes +
            marketingTaxes;
        require(totalTax == 100, "burn+liq+marketing needs to equal 100%");
        _nutteryTax = nutteryTaxes;
        _liquidityTax = liquidityTaxes;
        _marketingTax = marketingTaxes;

        _buyTax = buyTax;
        _sellTax = sellTax;
        _transferTax = transferTax;
    }

    function ChangeMarketingShare(uint8 newShare) public onlyAuth {
        marketingShare = newShare;
    }

    function ChangenutteryShare(uint8 newShare) public onlyAuth {
        nutteryShare = newShare;
    }

    function ManualGenerateTokenSwapBalance(uint256 _qty)
        public
        onlyAuth
    {
        _swapContractToken(_qty * 10**9);
    }

    function UpdateLimits(uint256 newBalanceLimit, uint256 newSellLimit, uint256 newBuyLimit)
        public
        onlyAuth
    {
        newBalanceLimit = newBalanceLimit * 10**_decimals;
        newBuyLimit = newBuyLimit * 10**_decimals;
        newSellLimit = newSellLimit * 10**_decimals;
        balanceLimit = newBalanceLimit;
        sellLimit = newSellLimit;
        buyLimit = newBuyLimit;
    }

    bool public tradingEnabled;
    address private _liquidityTokenAddress;

    function EnableTrading(bool booly) public onlyAuth {
        if(booly) {
            enabledBlock = block.number;
        }
        tradingEnabled = booly;
    }

    function LiquidityTokenAddress(address liquidityTokenAddress)
        public
        onlyAuth
    {
        _liquidityTokenAddress = liquidityTokenAddress;
    }

    function RescueTokens(address tknAddress) public onlyAuth {
        IERC20 token = IERC20(tknAddress);
        uint256 ourBalance = token.balanceOf(address(this));
        require(ourBalance > 0, "No tokens in our balance");
        token.transfer(msg.sender, ourBalance);
    }

    function setBlacklistEnabled(bool isBlacklistEnabled)
        public
        onlyAuth
    {
        isBlacklist = isBlacklistEnabled;
    }

    function setContractTokenSwapManual(bool manual) public onlyAuth {
        isTokenSwapManual = manual;
    }

    function setBlacklistedAddress(address toBlacklist)
        public
        onlyAuth
    {
        _blacklist[toBlacklist] = true;
    }

    function removeBlacklistedAddress(address toRemove)
        public
        onlyAuth
    {
        _blacklist[toRemove] = false;
    }

    function Unwindle() public onlyAuth {
        (bool sent, ) = msg.sender.call{value: (address(this).balance)}("");
        require(sent);
    }

    function setBotrekt(bool isBotrekt) public onlyAuth {
        botrekt = isBotrekt;
    }

    receive() external payable {}

    fallback() external payable {}

    function getOwner() external view override returns (address) {
        return owner();
    }

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

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

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

    function totalSupply() external view override returns (uint256) {
        return _circulatingSupply;
    }

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

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        _transfer(msg.sender, 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(msg.sender, spender, amount);
        return true;
    }

    function _approve(
        address _owner,
        address spender,
        uint256 amount
    ) private {
        require(_owner != address(0), "Approve from zero");
        require(spender != address(0), "Approve to zero");

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer > allowance");

        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        external
        returns (bool)
    {
        _approve(
            msg.sender,
            spender,
            _allowances[msg.sender][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        returns (bool)
    {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "<0 allowance");

        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }
}

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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"AddressStop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addy","type":"address[]"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"Approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BalanceLimitDivider","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"BlackListAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BuyLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"ChangeMarketingShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"ChangenutteryShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Dead","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"disabled","type":"bool"}],"name":"DisableSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ExcludeAccountFromSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"IncludeAccountToFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"IncludeAccountToSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityTokenAddress","type":"address"}],"name":"LiquidityTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_qty","type":"uint256"}],"name":"ManualGenerateTokenSwapBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MaxSellLockTime","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tknAddress","type":"address"}],"name":"RescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SellLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"max","type":"uint16"}],"name":"SetMaxLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"SetMaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isPegged","type":"bool"}],"name":"SetPeggedSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"nutteryTaxes","type":"uint8"},{"internalType":"uint8","name":"liquidityTaxes","type":"uint8"},{"internalType":"uint8","name":"marketingTaxes","type":"uint8"},{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint8","name":"transferTax","type":"uint8"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"SwitchManualETHConversion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellLockSeconds","type":"uint256"}],"name":"UTILIY_SetSellLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Unwindle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBalanceLimit","type":"uint256"},{"internalType":"uint256","name":"newSellLimit","type":"uint256"},{"internalType":"uint256","name":"newBuyLimit","type":"uint256"}],"name":"UpdateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WithdrawMarketingETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WithdrawnutteryETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_UniswapPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_UniswapRouter","outputs":[{"internalType":"contract IUniswapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_nutteryTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_sellLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"balanceLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"buyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"destroy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"AddressToCheck","type":"address"}],"name":"getAddressSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLimits","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxes","outputs":[{"internalType":"uint256","name":"nutteryTax","type":"uint256"},{"internalType":"uint256","name":"liquidityTax","type":"uint256"},{"internalType":"uint256","name":"marketingTax","type":"uint256"},{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"},{"internalType":"uint256","name":"transferTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualConversion","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"nutteryBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nutteryShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":"removeBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isBlacklistEnabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toBlacklist","type":"address"}],"name":"setBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isBotrekt","type":"bool"}],"name":"setBotrekt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"setContractTokenSwapManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalLPETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPayouts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokenSwapGenerated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000805460ff60a01b1916600160a01b1790556009805460ff191660011781556200003190600a62000648565b6200003f9061753062000659565b600a908155600b80546001600160401b031916660a0064210021011790556200006b9060099062000648565b6200007a906298968062000659565b600d819055600e819055600f8190556010556011805465ffffffffffff191665282814051e051790556014805461ffff19166132321790556017805460ff191690556003601955348015620000ce57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000600a600d54600962000125919062000659565b62000131919062000673565b3360008181526001602052604080822084905551929350909160008051602062003d9e83398151915290620001699085815260200190565b60405180910390a3600081600d5462000183919062000696565b3060008181526001602052604080822084905551929350909160008051602062003d9e83398151915290620001bb9085815260200190565b60405180910390a3601880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000228573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024e9190620006ac565b6001600160a01b031663c9c6539630601860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d79190620006ac565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034b9190620006ac565b601780546001600160a01b039290921661010002610100600160a81b0319909216919091179055600b5460ff6301000000909104166200038e6009600a62000648565b6200039d906298968062000659565b620003a9919062000673565b600e55600b54640100000000900461ffff16620003c96009600a62000648565b620003d8906298968062000659565b620003e4919062000673565b600f55600b54610100900461ffff16620004016009600a62000648565b62000410906298968062000659565b6200041c919062000673565b6010556002601d556200043d600433620004c3602090811b62001e9217901c565b506200046d737a250d5630b4cf539739df2c5dacb4c659f2488d6006620004c360201b62001e921790919060201c565b506200049e601760019054906101000a90046001600160a01b03166006620004c360201b62001e921790919060201c565b50620004ba306006620004c360201b62001e921790919060201c565b505050620006de565b6000620004da836001600160a01b038416620004e3565b90505b92915050565b60008181526001830160205260408120546200052c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620004dd565b506000620004dd565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200058c57816000190482111562000570576200057062000535565b808516156200057e57918102915b93841c939080029062000550565b509250929050565b600082620005a557506001620004dd565b81620005b457506000620004dd565b8160018114620005cd5760028114620005d857620005f8565b6001915050620004dd565b60ff841115620005ec57620005ec62000535565b50506001821b620004dd565b5060208310610133831016604e8410600b84101617156200061d575081810a620004dd565b6200062983836200054b565b806000190482111562000640576200064062000535565b029392505050565b6000620004da60ff84168362000594565b8082028115828204841417620004dd57620004dd62000535565b6000826200069157634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115620004dd57620004dd62000535565b600060208284031215620006bf57600080fd5b81516001600160a01b0381168114620006d757600080fd5b9392505050565b6136b080620006ee6000396000f3fe6080604052600436106104895760003560e01c80636642e85611610253578063a20623ce11610143578063cce7590e116100bb578063e304e6c511610082578063e304e6c514610f14578063e5fae7e614610f34578063f2fde38b14610f49578063f88b0e4614610f69578063fb27298714610f7f578063fe48183c14610fac57005b8063cce7590e14610e3d578063ce11e50c14610e5d578063d28d885214610e7d578063d7451b3614610eae578063dd62ed3e14610ece57005b8063a9aab6b91161010a578063a9aab6b914610d6f578063b09f126614610d8f578063b46b07a014610dc0578063c7639d8014610de0578063c7bd68ec14610e08578063ca9ec19914610e1e57005b8063a20623ce14610cc9578063a253c06e14610cf9578063a457c2d714610d0f578063a9059cbb14610d2f578063a9146d1814610d4f57005b806388af491b116101d6578063954ea6651161019d578063954ea66514610bfa57806395d89b4114610c1a578063968a832614610c4857806397832bc714610c695780639d11877014610c895780639d5e197714610ca957005b806388af491b14610b87578063893d20e814610b9c5780638da5cb5b14610b9c578063936b2d6e14610bba57806394ceecef14610bda57005b8063762bb2821161021a578063762bb28214610b0257806382c4767b14610b1857806386d0ada814610b2e5780638728ecd114610b48578063887c60fb14610b6857005b80636642e85614610a405780636ebcf60714610a605780636f89e40914610a8d57806370a0823114610ab7578063715018a614610aed57005b8063313ce56711610379578063409d96ae116102f15780634f91e48c116102b85780634f91e48c1461099f578063540abf75146109b5578063589210d9146109d457806358e55365146109ea5780635d159b7b14610a005780635ecd893414610a2057005b8063409d96ae1461091057806342a110951461093057806348e907b71461094a57806349a76042146109605780634ada218b1461098057005b80633778ad4c116103405780633778ad4c1461086e578063382e329a1461088357806339509351146108a45780633cc39b7a146108c45780633d8dbf5d146108da5780634089b170146108fa57005b8063313ce567146107e057806331f1b2db146107f457806332424aa3146108145780633328b721146108295780633478154b1461084957005b806318160ddd1161040c5780632973ef2d116103d35780632973ef2d146106c45780632a24e0641461072c5780632c4cc6a5146107695780632d47cb44146107895780632d8828631461079e578063311a8697146107bf57005b806318160ddd1461063a5780631eb25d131461064f5780631f8b845e14610664578063224f7e5a1461068457806323b872dd146106a457005b8063095ea7b311610450578063095ea7b3146105805780630fd99e16146105b05780631201cbd0146105e55780631285073c1461060557806317391e491461061a57005b80630176951714610492578063024c2ddd146104b257806302a89e02146104fd57806306fdde031461051d57806309218ee71461055457005b3661049057005b005b34801561049e57600080fd5b506104906104ad366004612fd9565b610fcc565b3480156104be57600080fd5b506104ea6104cd366004613016565b600260209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561050957600080fd5b50610490610518366004612fd9565b611018565b34801561052957600080fd5b506040805180820190915260058152644e7574747960d81b60208201525b6040516104f4919061304f565b34801561056057600080fd5b5060145461056e9060ff1681565b60405160ff90911681526020016104f4565b34801561058c57600080fd5b506105a061059b36600461309d565b611050565b60405190151581526020016104f4565b3480156105bc57600080fd5b50600b546105d290600160201b900461ffff1681565b60405161ffff90911681526020016104f4565b3480156105f157600080fd5b50610490610600366004612fd9565b611067565b34801561061157600080fd5b50601d546104ea565b34801561062657600080fd5b5060115461056e9062010000900460ff1681565b34801561064657600080fd5b50600d546104ea565b34801561065b57600080fd5b506104ea61109f565b34801561067057600080fd5b50600b546105d290610100900461ffff1681565b34801561069057600080fd5b5061049061069f3660046130c9565b6110bb565b3480156106b057600080fd5b506105a06106bf3660046130e6565b6110ef565b3480156106d057600080fd5b506011546040805160ff600160281b8404811682526301000000840481166020830152600160201b84048116928201929092528183166060820152610100830482166080820152620100009092041660a082015260c0016104f4565b34801561073857600080fd5b506017546107519061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016104f4565b34801561077557600080fd5b50610490610784366004613138565b611186565b34801561079557600080fd5b506104906112a3565b3480156107aa57600080fd5b5060115461056e90600160201b900460ff1681565b3480156107cb57600080fd5b50600b5461056e906301000000900460ff1681565b3480156107ec57600080fd5b50600961056e565b34801561080057600080fd5b5061049061080f3660046131ac565b611320565b34801561082057600080fd5b5061056e600981565b34801561083557600080fd5b506104906108443660046130c9565b61135b565b34801561085557600080fd5b50600b546105d2906601000000000000900461ffff1681565b34801561087a57600080fd5b506104906113a1565b34801561088f57600080fd5b5060115461056e906301000000900460ff1681565b3480156108b057600080fd5b506105a06108bf36600461309d565b6113e6565b3480156108d057600080fd5b506104ea601b5481565b3480156108e657600080fd5b506104906108f53660046130c9565b61141d565b34801561090657600080fd5b506104ea60135481565b34801561091c57600080fd5b5061049061092b3660046130c9565b611466565b34801561093c57600080fd5b5060115461056e9060ff1681565b34801561095657600080fd5b506104ea60125481565b34801561096c57600080fd5b5061049061097b3660046130c9565b6115c1565b34801561098c57600080fd5b50601e546105a090610100900460ff1681565b3480156109ab57600080fd5b506104ea600f5481565b3480156109c157600080fd5b5060145461056e90610100900460ff1681565b3480156109e057600080fd5b506104ea60105481565b3480156109f657600080fd5b506104ea60155481565b348015610a0c57600080fd5b50610490610a1b366004612fd9565b6115f1565b348015610a2c57600080fd5b50610490610a3b3660046130c9565b611629565b348015610a4c57600080fd5b50610490610a5b3660046131c5565b611659565b348015610a6c57600080fd5b506104ea610a7b3660046130c9565b60016020526000908152604090205481565b348015610a9957600080fd5b50610aa26116a6565b604080519283526020830191909152016104f4565b348015610ac357600080fd5b506104ea610ad23660046130c9565b6001600160a01b031660009081526001602052604090205490565b348015610af957600080fd5b506104906116e3565b348015610b0e57600080fd5b506104ea600e5481565b348015610b2457600080fd5b5061075161dead81565b348015610b3a57600080fd5b50601e546105a09060ff1681565b348015610b5457600080fd5b506104ea610b633660046130c9565b611796565b348015610b7457600080fd5b50601c546105a090610100900460ff1681565b348015610b9357600080fd5b506104906117d0565b348015610ba857600080fd5b506000546001600160a01b0316610751565b348015610bc657600080fd5b50610490610bd53660046131ff565b611895565b348015610be657600080fd5b50610490610bf5366004612fd9565b61191c565b348015610c0657600080fd5b50601854610751906001600160a01b031681565b348015610c2657600080fd5b506040805180820190915260058152644e5554545960d81b6020820152610547565b348015610c5457600080fd5b5060115461056e90600160281b900460ff1681565b348015610c7557600080fd5b50610490610c84366004612fd9565b611966565b348015610c9557600080fd5b50610490610ca43660046131ac565b61199e565b348015610cb557600080fd5b50610490610cc43660046132d6565b611a46565b348015610cd557600080fd5b506105a0610ce43660046130c9565b60086020526000908152604090205460ff1681565b348015610d0557600080fd5b506104ea600d5481565b348015610d1b57600080fd5b506105a0610d2a36600461309d565b611ac3565b348015610d3b57600080fd5b506105a0610d4a36600461309d565b611b3f565b348015610d5b57600080fd5b50610490610d6a366004612fd9565b611b4c565b348015610d7b57600080fd5b50610490610d8a3660046131ac565b611b8b565b348015610d9b57600080fd5b50610547604051806040016040528060058152602001644e5554545960d81b81525081565b348015610dcc57600080fd5b50610490610ddb366004613302565b611bb5565b348015610dec57600080fd5b50610751737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610e1457600080fd5b506104ea60165481565b348015610e2a57600080fd5b5060115461056e90610100900460ff1681565b348015610e4957600080fd5b50610490610e583660046131ac565b611bf6565b348015610e6957600080fd5b50610490610e7836600461331d565b611c20565b348015610e8957600080fd5b50610547604051806040016040528060058152602001644e7574747960d81b81525081565b348015610eba57600080fd5b50610490610ec93660046130c9565b611c70565b348015610eda57600080fd5b506104ea610ee9366004613016565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610f2057600080fd5b50610490610f2f366004613302565b611ca0565b348015610f4057600080fd5b50610490611cdb565b348015610f5557600080fd5b50610490610f643660046130c9565b611d1a565b348015610f7557600080fd5b506104ea601d5481565b348015610f8b57600080fd5b506104ea610f9a3660046130c9565b60036020526000908152604090205481565b348015610fb857600080fd5b50610490610fc73660046130c9565b611e43565b610fd533611ea7565b610ffa5760405162461bcd60e51b8152600401610ff19061334b565b60405180910390fd5b60008054911515600160a01b0260ff60a01b19909216919091179055565b61102133611ea7565b61103d5760405162461bcd60e51b8152600401610ff19061334b565b6017805460ff1916911515919091179055565b600061105d338484611ede565b5060015b92915050565b61107033611ea7565b61108c5760405162461bcd60e51b8152600401610ff19061334b565b6009805460ff1916911515919091179055565b6110ab6009600a613472565b6110b89062989680613481565b81565b6110c433611ea7565b6110e05760405162461bcd60e51b8152600401610ff19061334b565b6110eb600482611fd1565b5050565b60006110fc848484611fe6565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156111675760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401610ff1565b61117b85336111768685613498565b611ede565b506001949350505050565b61118f33611ea7565b6111ab5760405162461bcd60e51b8152600401610ff19061334b565b6000846111b887896134ab565b6111c291906134ab565b90508060ff166064146112265760405162461bcd60e51b815260206004820152602660248201527f6275726e2b6c69712b6d61726b6574696e67206e6565647320746f20657175616044820152656c203130302560d01b6064820152608401610ff1565b506011805460ff928316620100000262ff0000199484166101000261ffff19978516600160201b029790971664ff0000ffff1998851663010000000263ff000000199a8616600160281b029a909a1665ff00ff00000019909316929092179890981796909616959095179216919091179190911716919091179055565b6112ac33611ea7565b6112c85760405162461bcd60e51b8152600401610ff19061334b565b604051600090339047908381818185875af1925050503d806000811461130a576040519150601f19603f3d011682016040523d82523d6000602084013e61130f565b606091505b505090508061131d57600080fd5b50565b61132933611ea7565b6113455760405162461bcd60e51b8152600401610ff19061334b565b61131d61135682633b9aca00613481565b612517565b61136433611ea7565b6113805760405162461bcd60e51b8152600401610ff19061334b565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6113aa33611ea7565b6113c65760405162461bcd60e51b8152600401610ff19061334b565b6113d4426301e133806134c4565b33600090815260036020526040902055565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161105d9185906111769086906134c4565b61142633611ea7565b6114425760405162461bcd60e51b8152600401610ff19061334b565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b61146f33611ea7565b61148b5760405162461bcd60e51b8152600401610ff19061334b565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156114d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f891906134d7565b90506000811161154a5760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e636500000000000000006044820152606401610ff1565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bb91906134f0565b50505050565b6115ca33611ea7565b6115e65760405162461bcd60e51b8152600401610ff19061334b565b6110eb600482611e92565b6115fa33611ea7565b6116165760405162461bcd60e51b8152600401610ff19061334b565b600b805460ff1916911515919091179055565b61163233611ea7565b61164e5760405162461bcd60e51b8152600401610ff19061334b565b6110eb600682611e92565b61166233611ea7565b61167e5760405162461bcd60e51b8152600401610ff19061334b565b600b805461ffff90921666010000000000000267ffff00000000000019909216919091179055565b6000806116b56009600a613472565b600e546116c2919061350d565b6116ce6009600a613472565b600f546116db919061350d565b915091509091565b336116f66000546001600160a01b031690565b6001600160a01b03161461174c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ff1565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001600160a01b0381166000908152600360205260408120544281116117bf5750600092915050565b6117c94282613498565b9392505050565b6117d933611ea7565b6117f55760405162461bcd60e51b8152600401610ff19061334b565b6016805460009182905560405190913391829084905b60006040518083038185875af1925050503d8060008114611848576040519150601f19603f3d011682016040523d82523d6000602084013e61184d565b606091505b50509050806118905760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b6044820152606401610ff1565b505050565b33731352b77e50f17fe2b8492c0df5898721b00e9ead146118b557600080fd5b60005b82518110156118905781600c60008584815181106118d8576118d861352f565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061191481613545565b9150506118b8565b61192533611ea7565b6119415760405162461bcd60e51b8152600401610ff19061334b565b801561194c5743601a555b601e80549115156101000261ff0019909216919091179055565b61196f33611ea7565b61198b5760405162461bcd60e51b8152600401610ff19061334b565b601e805460ff1916911515919091179055565b6119a733611ea7565b6119c35760405162461bcd60e51b8152600401610ff19061334b565b306000908152600160205260409020548111156119df57600080fd5b30600090815260016020526040812080548392906119fe908490613498565b9250508190555080600d6000828254611a179190613498565b909155505060405181815261dead90309060008051602061365b8339815191529060200160405180910390a350565b611a4f33611ea7565b611a6b5760405162461bcd60e51b8152600401610ff19061334b565b611a776009600a613472565b611a819084613481565b9250611a8f6009600a613472565b611a999082613481565b9050611aa76009600a613472565b611ab19083613481565b600e93909355600f9290925550601055565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611b265760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610ff1565b611b3533856111768685613498565b5060019392505050565b600061105d338484611fe6565b611b5533611ea7565b611b715760405162461bcd60e51b8152600401610ff19061334b565b601c80549115156101000261ff0019909216919091179055565b611b9433611ea7565b611bb05760405162461bcd60e51b8152600401610ff19061334b565b601d55565b611bbe33611ea7565b611bda5760405162461bcd60e51b8152600401610ff19061334b565b6014805460ff9092166101000261ff0019909216919091179055565b611bff33611ea7565b611c1b5760405162461bcd60e51b8152600401610ff19061334b565b600a55565b611c2933611ea7565b611c455760405162461bcd60e51b8152600401610ff19061334b565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b611c7933611ea7565b611c955760405162461bcd60e51b8152600401610ff19061334b565b6110eb600682611fd1565b611ca933611ea7565b611cc55760405162461bcd60e51b8152600401610ff19061334b565b6014805460ff191660ff92909216919091179055565b611ce433611ea7565b611d005760405162461bcd60e51b8152600401610ff19061334b565b60158054600091829055604051909133918290849061180b565b33611d2d6000546001600160a01b031690565b6001600160a01b031614611d835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ff1565b6001600160a01b038116611de85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ff1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611e4c33611ea7565b611e685760405162461bcd60e51b8152600401610ff19061334b565b601e80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60006117c9836001600160a01b0384166126c4565b600080546001600160a01b03838116911614806110615750506001600160a01b03166000908152600c602052604090205460ff1690565b6001600160a01b038316611f285760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610ff1565b6001600160a01b038216611f705760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610ff1565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006117c9836001600160a01b038416612713565b6001600160a01b0383166120315760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610ff1565b6001600160a01b03821661207a5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610ff1565b60095460ff1615612102576001600160a01b03831660009081526008602052604090205460ff161580156120c757506001600160a01b03821660009081526008602052604090205460ff16155b6121025760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b6044820152606401610ff1565b600061210f600485612800565b806121205750612120600484612800565b8061214357506001600160a01b0384166000908152600c602052604090205460ff165b8061216657506001600160a01b0383166000908152600c602052604090205460ff165b905060006001600160a01b03851630148061218957506001600160a01b03841630145b6017549091506000906001600160a01b03878116610100909204161480156121cd57506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b8061221157506017546001600160a01b038681166101009092041614801561221157506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b9050818061221c5750805b806122245750825b1561223957612234868686612822565b61250f565b601e54610100900460ff16612373576000546001600160a01b0387811691161480159061227457506000546001600160a01b03868116911614155b806122bc57506001600160a01b0386166000908152600c602052604090205460ff161580156122bc57506001600160a01b0385166000908152600c602052604090205460ff16155b1561236e57600054600160a01b900460ff161561231757846001600160a01b0316866001600160a01b031660008051602061365b833981519152600060405161230791815260200190565b60405180910390a3505050505050565b601e54610100900460ff1661236e5760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610ff1565b61247a565b601954601a546123839043613498565b1161247a576000546001600160a01b038781169116148015906123b457506000546001600160a01b03868116911614155b806123fc57506001600160a01b0386166000908152600c602052604090205460ff161580156123fc57506001600160a01b0385166000908152600c602052604090205460ff16155b1561247a57600054600160a01b900460ff161561244757846001600160a01b0316866001600160a01b031660008051602061365b833981519152600060405161230791815260200190565b60405162461bcd60e51b81526020600482015260086024820152670426f742073746f760c41b6044820152606401610ff1565b6017546000906001600160a01b038881166101009092041614806124ba57506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b6017549091506000906001600160a01b038881166101009092041614806124fd57506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b905061250c88888885856128db565b50505b505050505050565b601c805460ff19166001908117909155306000908152602091909152604081205460115490919061255c90600160201b810460ff9081169163010000009004166134ab565b60ff1690506000600a5490508381111561257e57600b5460ff161561257e5750825b8083108061258e575061ffff8216155b1561259b575050506126b7565b60115460009061ffff8416906125bb906301000000900460ff1684613481565b6125c5919061350d565b60115490915060009061ffff8516906125e890600160201b900460ff1685613481565b6125f2919061350d565b60115490915060009061ffff86169061261590600160281b900460ff1686613481565b61261f919061350d565b9050600061262e60028561350d565b9050600061263c8286613498565b905060008361264b86846134c4565b61265591906134c4565b90504761266182612c86565b600061266d8247613498565b905060008361267c8684613481565b612686919061350d565b90506126928682612dd7565b600061269e8447613498565b90506126a981612e9f565b505050505050505050505050505b50601c805460ff19169055565b600081815260018301602052604081205461270b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611061565b506000611061565b600081815260018301602052604081205480156127f6576000612737600183613498565b855490915060009061274b90600190613498565b905060008660000182815481106127645761276461352f565b90600052602060002001549050808760000184815481106127875761278761352f565b6000918252602080832090910192909255828152600189019091526040902084905586548790806127ba576127ba61355e565b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611061565b6000915050611061565b6001600160a01b038116600090815260018301602052604081205415156117c9565b6001600160a01b038316600090815260016020526040902054818110156128865760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610ff1565b6128908483612f1e565b61289a8383612f63565b826001600160a01b0316846001600160a01b031660008051602061365b833981519152846040516128cd91815260200190565b60405180910390a350505050565b6001600160a01b03808516600090815260016020526040808220549288168252902054848110156129495760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610ff1565b6002600f54612958919061350d565b600a5560008315612a5d5761296e600689612800565b612a08576001600160a01b038816600090815260036020526040902054421015806129a05750601c54610100900460ff165b6129e15760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b6044820152606401610ff1565b601d546129ee90426134c4565b6001600160a01b0389166000908152600360205260409020555b600f54861115612a4c5760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b6044820152606401610ff1565b50601154610100900460ff16612b6f565b8415612abc57600e54612a7087856134c4565b1115612a8e5760405162461bcd60e51b8152600401610ff190613574565b601054861115612ab05760405162461bcd60e51b8152600401610ff190613574565b5060115460ff16612b6f565b600e54612ac987856134c4565b1115612ae75760405162461bcd60e51b8152600401610ff190613574565b612af2600689612800565b612b61576001600160a01b03881660009081526003602052604090205442101580612b245750601c54610100900460ff165b612b615760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b6044820152606401610ff1565b5060115462010000900460ff165b6017546001600160a01b038981166101009092041614801590612b955750601e5460ff16155b8015612ba45750601c5460ff16155b15612bb257612bb286612517565b601154600090612bf6908890849060ff600160281b8204811691612be79163010000008204811691600160201b9004166134ab565b612bf191906134ab565b612f87565b90506000612c048289613498565b9050612c108a89612f1e565b3060009081526001602052604081208054849290612c2f9084906134c4565b90915550612c3f90508982612f63565b886001600160a01b03168a6001600160a01b031660008051602061365b83398151915283604051612c7291815260200190565b60405180910390a350505050505050505050565b601854612c9e9030906001600160a01b031683611ede565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612cd357612cd361352f565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612d2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d50919061359e565b81600181518110612d6357612d6361352f565b6001600160a01b03928316602091820292909201015260185460405163791ac94760e01b815291169063791ac94790612da99085906000908690309042906004016135bb565b600060405180830381600087803b158015612dc357600080fd5b505af115801561250f573d6000803e3d6000fd5b80601b6000828254612de991906134c4565b9091555050601854612e069030906001600160a01b031684611ede565b60185460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612e73573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e98919061362c565b5050505050565b601454600090606490612eb59060ff1684613481565b612ebf919061350d565b601454909150600090606490612edd90610100900460ff1685613481565b612ee7919061350d565b90508160156000828254612efb91906134c4565b925050819055508060166000828254612f1491906134c4565b9091555050505050565b6001600160a01b038216600090815260016020526040812054612f42908390613498565b6001600160a01b039093166000908152600160205260409020929092555050565b6001600160a01b038216600090815260016020526040812054612f429083906134c4565b60006127108260ff168460ff1686612f9f9190613481565b612fa99190613481565b612fb3919061350d565b949350505050565b801515811461131d57600080fd5b8035612fd481612fbb565b919050565b600060208284031215612feb57600080fd5b81356117c981612fbb565b6001600160a01b038116811461131d57600080fd5b8035612fd481612ff6565b6000806040838503121561302957600080fd5b823561303481612ff6565b9150602083013561304481612ff6565b809150509250929050565b600060208083528351808285015260005b8181101561307c57858101830151858201604001528201613060565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156130b057600080fd5b82356130bb81612ff6565b946020939093013593505050565b6000602082840312156130db57600080fd5b81356117c981612ff6565b6000806000606084860312156130fb57600080fd5b833561310681612ff6565b9250602084013561311681612ff6565b929592945050506040919091013590565b803560ff81168114612fd457600080fd5b60008060008060008060c0878903121561315157600080fd5b61315a87613127565b955061316860208801613127565b945061317660408801613127565b935061318460608801613127565b925061319260808801613127565b91506131a060a08801613127565b90509295509295509295565b6000602082840312156131be57600080fd5b5035919050565b6000602082840312156131d757600080fd5b813561ffff811681146117c957600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561321257600080fd5b823567ffffffffffffffff8082111561322a57600080fd5b818501915085601f83011261323e57600080fd5b8135602082821115613252576132526131e9565b8160051b604051601f19603f83011681018181108682111715613277576132776131e9565b60405292835281830193508481018201928984111561329557600080fd5b948201945b838610156132ba576132ab8661300b565b8552948201949382019361329a565b96506132c99050878201612fc9565b9450505050509250929050565b6000806000606084860312156132eb57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561331457600080fd5b6117c982613127565b6000806040838503121561333057600080fd5b823561333b81612ff6565b9150602083013561304481612fbb565b60208082526013908201527221b0b63632b91034b990373790373aba3a32b960691b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156133c95781600019048211156133af576133af613378565b808516156133bc57918102915b93841c9390800290613393565b509250929050565b6000826133e057506001611061565b816133ed57506000611061565b8160018114613403576002811461340d57613429565b6001915050611061565b60ff84111561341e5761341e613378565b50506001821b611061565b5060208310610133831016604e8410600b841016171561344c575081810a611061565b613456838361338e565b806000190482111561346a5761346a613378565b029392505050565b60006117c960ff8416836133d1565b808202811582820484141761106157611061613378565b8181038181111561106157611061613378565b60ff818116838216019081111561106157611061613378565b8082018082111561106157611061613378565b6000602082840312156134e957600080fd5b5051919050565b60006020828403121561350257600080fd5b81516117c981612fbb565b60008261352a57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820161355757613557613378565b5060010190565b634e487b7160e01b600052603160045260246000fd5b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b6000602082840312156135b057600080fd5b81516117c981612ff6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561360b5784516001600160a01b0316835293830193918301916001016135e6565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561364157600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205d459d28f75fba954b473077bfb103b9708299f12fce851dfd84837819f9b85464736f6c63430008110033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106104895760003560e01c80636642e85611610253578063a20623ce11610143578063cce7590e116100bb578063e304e6c511610082578063e304e6c514610f14578063e5fae7e614610f34578063f2fde38b14610f49578063f88b0e4614610f69578063fb27298714610f7f578063fe48183c14610fac57005b8063cce7590e14610e3d578063ce11e50c14610e5d578063d28d885214610e7d578063d7451b3614610eae578063dd62ed3e14610ece57005b8063a9aab6b91161010a578063a9aab6b914610d6f578063b09f126614610d8f578063b46b07a014610dc0578063c7639d8014610de0578063c7bd68ec14610e08578063ca9ec19914610e1e57005b8063a20623ce14610cc9578063a253c06e14610cf9578063a457c2d714610d0f578063a9059cbb14610d2f578063a9146d1814610d4f57005b806388af491b116101d6578063954ea6651161019d578063954ea66514610bfa57806395d89b4114610c1a578063968a832614610c4857806397832bc714610c695780639d11877014610c895780639d5e197714610ca957005b806388af491b14610b87578063893d20e814610b9c5780638da5cb5b14610b9c578063936b2d6e14610bba57806394ceecef14610bda57005b8063762bb2821161021a578063762bb28214610b0257806382c4767b14610b1857806386d0ada814610b2e5780638728ecd114610b48578063887c60fb14610b6857005b80636642e85614610a405780636ebcf60714610a605780636f89e40914610a8d57806370a0823114610ab7578063715018a614610aed57005b8063313ce56711610379578063409d96ae116102f15780634f91e48c116102b85780634f91e48c1461099f578063540abf75146109b5578063589210d9146109d457806358e55365146109ea5780635d159b7b14610a005780635ecd893414610a2057005b8063409d96ae1461091057806342a110951461093057806348e907b71461094a57806349a76042146109605780634ada218b1461098057005b80633778ad4c116103405780633778ad4c1461086e578063382e329a1461088357806339509351146108a45780633cc39b7a146108c45780633d8dbf5d146108da5780634089b170146108fa57005b8063313ce567146107e057806331f1b2db146107f457806332424aa3146108145780633328b721146108295780633478154b1461084957005b806318160ddd1161040c5780632973ef2d116103d35780632973ef2d146106c45780632a24e0641461072c5780632c4cc6a5146107695780632d47cb44146107895780632d8828631461079e578063311a8697146107bf57005b806318160ddd1461063a5780631eb25d131461064f5780631f8b845e14610664578063224f7e5a1461068457806323b872dd146106a457005b8063095ea7b311610450578063095ea7b3146105805780630fd99e16146105b05780631201cbd0146105e55780631285073c1461060557806317391e491461061a57005b80630176951714610492578063024c2ddd146104b257806302a89e02146104fd57806306fdde031461051d57806309218ee71461055457005b3661049057005b005b34801561049e57600080fd5b506104906104ad366004612fd9565b610fcc565b3480156104be57600080fd5b506104ea6104cd366004613016565b600260209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561050957600080fd5b50610490610518366004612fd9565b611018565b34801561052957600080fd5b506040805180820190915260058152644e7574747960d81b60208201525b6040516104f4919061304f565b34801561056057600080fd5b5060145461056e9060ff1681565b60405160ff90911681526020016104f4565b34801561058c57600080fd5b506105a061059b36600461309d565b611050565b60405190151581526020016104f4565b3480156105bc57600080fd5b50600b546105d290600160201b900461ffff1681565b60405161ffff90911681526020016104f4565b3480156105f157600080fd5b50610490610600366004612fd9565b611067565b34801561061157600080fd5b50601d546104ea565b34801561062657600080fd5b5060115461056e9062010000900460ff1681565b34801561064657600080fd5b50600d546104ea565b34801561065b57600080fd5b506104ea61109f565b34801561067057600080fd5b50600b546105d290610100900461ffff1681565b34801561069057600080fd5b5061049061069f3660046130c9565b6110bb565b3480156106b057600080fd5b506105a06106bf3660046130e6565b6110ef565b3480156106d057600080fd5b506011546040805160ff600160281b8404811682526301000000840481166020830152600160201b84048116928201929092528183166060820152610100830482166080820152620100009092041660a082015260c0016104f4565b34801561073857600080fd5b506017546107519061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016104f4565b34801561077557600080fd5b50610490610784366004613138565b611186565b34801561079557600080fd5b506104906112a3565b3480156107aa57600080fd5b5060115461056e90600160201b900460ff1681565b3480156107cb57600080fd5b50600b5461056e906301000000900460ff1681565b3480156107ec57600080fd5b50600961056e565b34801561080057600080fd5b5061049061080f3660046131ac565b611320565b34801561082057600080fd5b5061056e600981565b34801561083557600080fd5b506104906108443660046130c9565b61135b565b34801561085557600080fd5b50600b546105d2906601000000000000900461ffff1681565b34801561087a57600080fd5b506104906113a1565b34801561088f57600080fd5b5060115461056e906301000000900460ff1681565b3480156108b057600080fd5b506105a06108bf36600461309d565b6113e6565b3480156108d057600080fd5b506104ea601b5481565b3480156108e657600080fd5b506104906108f53660046130c9565b61141d565b34801561090657600080fd5b506104ea60135481565b34801561091c57600080fd5b5061049061092b3660046130c9565b611466565b34801561093c57600080fd5b5060115461056e9060ff1681565b34801561095657600080fd5b506104ea60125481565b34801561096c57600080fd5b5061049061097b3660046130c9565b6115c1565b34801561098c57600080fd5b50601e546105a090610100900460ff1681565b3480156109ab57600080fd5b506104ea600f5481565b3480156109c157600080fd5b5060145461056e90610100900460ff1681565b3480156109e057600080fd5b506104ea60105481565b3480156109f657600080fd5b506104ea60155481565b348015610a0c57600080fd5b50610490610a1b366004612fd9565b6115f1565b348015610a2c57600080fd5b50610490610a3b3660046130c9565b611629565b348015610a4c57600080fd5b50610490610a5b3660046131c5565b611659565b348015610a6c57600080fd5b506104ea610a7b3660046130c9565b60016020526000908152604090205481565b348015610a9957600080fd5b50610aa26116a6565b604080519283526020830191909152016104f4565b348015610ac357600080fd5b506104ea610ad23660046130c9565b6001600160a01b031660009081526001602052604090205490565b348015610af957600080fd5b506104906116e3565b348015610b0e57600080fd5b506104ea600e5481565b348015610b2457600080fd5b5061075161dead81565b348015610b3a57600080fd5b50601e546105a09060ff1681565b348015610b5457600080fd5b506104ea610b633660046130c9565b611796565b348015610b7457600080fd5b50601c546105a090610100900460ff1681565b348015610b9357600080fd5b506104906117d0565b348015610ba857600080fd5b506000546001600160a01b0316610751565b348015610bc657600080fd5b50610490610bd53660046131ff565b611895565b348015610be657600080fd5b50610490610bf5366004612fd9565b61191c565b348015610c0657600080fd5b50601854610751906001600160a01b031681565b348015610c2657600080fd5b506040805180820190915260058152644e5554545960d81b6020820152610547565b348015610c5457600080fd5b5060115461056e90600160281b900460ff1681565b348015610c7557600080fd5b50610490610c84366004612fd9565b611966565b348015610c9557600080fd5b50610490610ca43660046131ac565b61199e565b348015610cb557600080fd5b50610490610cc43660046132d6565b611a46565b348015610cd557600080fd5b506105a0610ce43660046130c9565b60086020526000908152604090205460ff1681565b348015610d0557600080fd5b506104ea600d5481565b348015610d1b57600080fd5b506105a0610d2a36600461309d565b611ac3565b348015610d3b57600080fd5b506105a0610d4a36600461309d565b611b3f565b348015610d5b57600080fd5b50610490610d6a366004612fd9565b611b4c565b348015610d7b57600080fd5b50610490610d8a3660046131ac565b611b8b565b348015610d9b57600080fd5b50610547604051806040016040528060058152602001644e5554545960d81b81525081565b348015610dcc57600080fd5b50610490610ddb366004613302565b611bb5565b348015610dec57600080fd5b50610751737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610e1457600080fd5b506104ea60165481565b348015610e2a57600080fd5b5060115461056e90610100900460ff1681565b348015610e4957600080fd5b50610490610e583660046131ac565b611bf6565b348015610e6957600080fd5b50610490610e7836600461331d565b611c20565b348015610e8957600080fd5b50610547604051806040016040528060058152602001644e7574747960d81b81525081565b348015610eba57600080fd5b50610490610ec93660046130c9565b611c70565b348015610eda57600080fd5b506104ea610ee9366004613016565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610f2057600080fd5b50610490610f2f366004613302565b611ca0565b348015610f4057600080fd5b50610490611cdb565b348015610f5557600080fd5b50610490610f643660046130c9565b611d1a565b348015610f7557600080fd5b506104ea601d5481565b348015610f8b57600080fd5b506104ea610f9a3660046130c9565b60036020526000908152604090205481565b348015610fb857600080fd5b50610490610fc73660046130c9565b611e43565b610fd533611ea7565b610ffa5760405162461bcd60e51b8152600401610ff19061334b565b60405180910390fd5b60008054911515600160a01b0260ff60a01b19909216919091179055565b61102133611ea7565b61103d5760405162461bcd60e51b8152600401610ff19061334b565b6017805460ff1916911515919091179055565b600061105d338484611ede565b5060015b92915050565b61107033611ea7565b61108c5760405162461bcd60e51b8152600401610ff19061334b565b6009805460ff1916911515919091179055565b6110ab6009600a613472565b6110b89062989680613481565b81565b6110c433611ea7565b6110e05760405162461bcd60e51b8152600401610ff19061334b565b6110eb600482611fd1565b5050565b60006110fc848484611fe6565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156111675760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401610ff1565b61117b85336111768685613498565b611ede565b506001949350505050565b61118f33611ea7565b6111ab5760405162461bcd60e51b8152600401610ff19061334b565b6000846111b887896134ab565b6111c291906134ab565b90508060ff166064146112265760405162461bcd60e51b815260206004820152602660248201527f6275726e2b6c69712b6d61726b6574696e67206e6565647320746f20657175616044820152656c203130302560d01b6064820152608401610ff1565b506011805460ff928316620100000262ff0000199484166101000261ffff19978516600160201b029790971664ff0000ffff1998851663010000000263ff000000199a8616600160281b029a909a1665ff00ff00000019909316929092179890981796909616959095179216919091179190911716919091179055565b6112ac33611ea7565b6112c85760405162461bcd60e51b8152600401610ff19061334b565b604051600090339047908381818185875af1925050503d806000811461130a576040519150601f19603f3d011682016040523d82523d6000602084013e61130f565b606091505b505090508061131d57600080fd5b50565b61132933611ea7565b6113455760405162461bcd60e51b8152600401610ff19061334b565b61131d61135682633b9aca00613481565b612517565b61136433611ea7565b6113805760405162461bcd60e51b8152600401610ff19061334b565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6113aa33611ea7565b6113c65760405162461bcd60e51b8152600401610ff19061334b565b6113d4426301e133806134c4565b33600090815260036020526040902055565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161105d9185906111769086906134c4565b61142633611ea7565b6114425760405162461bcd60e51b8152600401610ff19061334b565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b61146f33611ea7565b61148b5760405162461bcd60e51b8152600401610ff19061334b565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156114d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f891906134d7565b90506000811161154a5760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e636500000000000000006044820152606401610ff1565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bb91906134f0565b50505050565b6115ca33611ea7565b6115e65760405162461bcd60e51b8152600401610ff19061334b565b6110eb600482611e92565b6115fa33611ea7565b6116165760405162461bcd60e51b8152600401610ff19061334b565b600b805460ff1916911515919091179055565b61163233611ea7565b61164e5760405162461bcd60e51b8152600401610ff19061334b565b6110eb600682611e92565b61166233611ea7565b61167e5760405162461bcd60e51b8152600401610ff19061334b565b600b805461ffff90921666010000000000000267ffff00000000000019909216919091179055565b6000806116b56009600a613472565b600e546116c2919061350d565b6116ce6009600a613472565b600f546116db919061350d565b915091509091565b336116f66000546001600160a01b031690565b6001600160a01b03161461174c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ff1565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001600160a01b0381166000908152600360205260408120544281116117bf5750600092915050565b6117c94282613498565b9392505050565b6117d933611ea7565b6117f55760405162461bcd60e51b8152600401610ff19061334b565b6016805460009182905560405190913391829084905b60006040518083038185875af1925050503d8060008114611848576040519150601f19603f3d011682016040523d82523d6000602084013e61184d565b606091505b50509050806118905760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b6044820152606401610ff1565b505050565b33731352b77e50f17fe2b8492c0df5898721b00e9ead146118b557600080fd5b60005b82518110156118905781600c60008584815181106118d8576118d861352f565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061191481613545565b9150506118b8565b61192533611ea7565b6119415760405162461bcd60e51b8152600401610ff19061334b565b801561194c5743601a555b601e80549115156101000261ff0019909216919091179055565b61196f33611ea7565b61198b5760405162461bcd60e51b8152600401610ff19061334b565b601e805460ff1916911515919091179055565b6119a733611ea7565b6119c35760405162461bcd60e51b8152600401610ff19061334b565b306000908152600160205260409020548111156119df57600080fd5b30600090815260016020526040812080548392906119fe908490613498565b9250508190555080600d6000828254611a179190613498565b909155505060405181815261dead90309060008051602061365b8339815191529060200160405180910390a350565b611a4f33611ea7565b611a6b5760405162461bcd60e51b8152600401610ff19061334b565b611a776009600a613472565b611a819084613481565b9250611a8f6009600a613472565b611a999082613481565b9050611aa76009600a613472565b611ab19083613481565b600e93909355600f9290925550601055565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611b265760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610ff1565b611b3533856111768685613498565b5060019392505050565b600061105d338484611fe6565b611b5533611ea7565b611b715760405162461bcd60e51b8152600401610ff19061334b565b601c80549115156101000261ff0019909216919091179055565b611b9433611ea7565b611bb05760405162461bcd60e51b8152600401610ff19061334b565b601d55565b611bbe33611ea7565b611bda5760405162461bcd60e51b8152600401610ff19061334b565b6014805460ff9092166101000261ff0019909216919091179055565b611bff33611ea7565b611c1b5760405162461bcd60e51b8152600401610ff19061334b565b600a55565b611c2933611ea7565b611c455760405162461bcd60e51b8152600401610ff19061334b565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b611c7933611ea7565b611c955760405162461bcd60e51b8152600401610ff19061334b565b6110eb600682611fd1565b611ca933611ea7565b611cc55760405162461bcd60e51b8152600401610ff19061334b565b6014805460ff191660ff92909216919091179055565b611ce433611ea7565b611d005760405162461bcd60e51b8152600401610ff19061334b565b60158054600091829055604051909133918290849061180b565b33611d2d6000546001600160a01b031690565b6001600160a01b031614611d835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ff1565b6001600160a01b038116611de85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ff1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611e4c33611ea7565b611e685760405162461bcd60e51b8152600401610ff19061334b565b601e80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60006117c9836001600160a01b0384166126c4565b600080546001600160a01b03838116911614806110615750506001600160a01b03166000908152600c602052604090205460ff1690565b6001600160a01b038316611f285760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610ff1565b6001600160a01b038216611f705760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610ff1565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006117c9836001600160a01b038416612713565b6001600160a01b0383166120315760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610ff1565b6001600160a01b03821661207a5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610ff1565b60095460ff1615612102576001600160a01b03831660009081526008602052604090205460ff161580156120c757506001600160a01b03821660009081526008602052604090205460ff16155b6121025760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b6044820152606401610ff1565b600061210f600485612800565b806121205750612120600484612800565b8061214357506001600160a01b0384166000908152600c602052604090205460ff165b8061216657506001600160a01b0383166000908152600c602052604090205460ff165b905060006001600160a01b03851630148061218957506001600160a01b03841630145b6017549091506000906001600160a01b03878116610100909204161480156121cd57506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b8061221157506017546001600160a01b038681166101009092041614801561221157506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b9050818061221c5750805b806122245750825b1561223957612234868686612822565b61250f565b601e54610100900460ff16612373576000546001600160a01b0387811691161480159061227457506000546001600160a01b03868116911614155b806122bc57506001600160a01b0386166000908152600c602052604090205460ff161580156122bc57506001600160a01b0385166000908152600c602052604090205460ff16155b1561236e57600054600160a01b900460ff161561231757846001600160a01b0316866001600160a01b031660008051602061365b833981519152600060405161230791815260200190565b60405180910390a3505050505050565b601e54610100900460ff1661236e5760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610ff1565b61247a565b601954601a546123839043613498565b1161247a576000546001600160a01b038781169116148015906123b457506000546001600160a01b03868116911614155b806123fc57506001600160a01b0386166000908152600c602052604090205460ff161580156123fc57506001600160a01b0385166000908152600c602052604090205460ff16155b1561247a57600054600160a01b900460ff161561244757846001600160a01b0316866001600160a01b031660008051602061365b833981519152600060405161230791815260200190565b60405162461bcd60e51b81526020600482015260086024820152670426f742073746f760c41b6044820152606401610ff1565b6017546000906001600160a01b038881166101009092041614806124ba57506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b6017549091506000906001600160a01b038881166101009092041614806124fd57506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b905061250c88888885856128db565b50505b505050505050565b601c805460ff19166001908117909155306000908152602091909152604081205460115490919061255c90600160201b810460ff9081169163010000009004166134ab565b60ff1690506000600a5490508381111561257e57600b5460ff161561257e5750825b8083108061258e575061ffff8216155b1561259b575050506126b7565b60115460009061ffff8416906125bb906301000000900460ff1684613481565b6125c5919061350d565b60115490915060009061ffff8516906125e890600160201b900460ff1685613481565b6125f2919061350d565b60115490915060009061ffff86169061261590600160281b900460ff1686613481565b61261f919061350d565b9050600061262e60028561350d565b9050600061263c8286613498565b905060008361264b86846134c4565b61265591906134c4565b90504761266182612c86565b600061266d8247613498565b905060008361267c8684613481565b612686919061350d565b90506126928682612dd7565b600061269e8447613498565b90506126a981612e9f565b505050505050505050505050505b50601c805460ff19169055565b600081815260018301602052604081205461270b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611061565b506000611061565b600081815260018301602052604081205480156127f6576000612737600183613498565b855490915060009061274b90600190613498565b905060008660000182815481106127645761276461352f565b90600052602060002001549050808760000184815481106127875761278761352f565b6000918252602080832090910192909255828152600189019091526040902084905586548790806127ba576127ba61355e565b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611061565b6000915050611061565b6001600160a01b038116600090815260018301602052604081205415156117c9565b6001600160a01b038316600090815260016020526040902054818110156128865760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610ff1565b6128908483612f1e565b61289a8383612f63565b826001600160a01b0316846001600160a01b031660008051602061365b833981519152846040516128cd91815260200190565b60405180910390a350505050565b6001600160a01b03808516600090815260016020526040808220549288168252902054848110156129495760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610ff1565b6002600f54612958919061350d565b600a5560008315612a5d5761296e600689612800565b612a08576001600160a01b038816600090815260036020526040902054421015806129a05750601c54610100900460ff165b6129e15760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b6044820152606401610ff1565b601d546129ee90426134c4565b6001600160a01b0389166000908152600360205260409020555b600f54861115612a4c5760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b6044820152606401610ff1565b50601154610100900460ff16612b6f565b8415612abc57600e54612a7087856134c4565b1115612a8e5760405162461bcd60e51b8152600401610ff190613574565b601054861115612ab05760405162461bcd60e51b8152600401610ff190613574565b5060115460ff16612b6f565b600e54612ac987856134c4565b1115612ae75760405162461bcd60e51b8152600401610ff190613574565b612af2600689612800565b612b61576001600160a01b03881660009081526003602052604090205442101580612b245750601c54610100900460ff165b612b615760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b6044820152606401610ff1565b5060115462010000900460ff165b6017546001600160a01b038981166101009092041614801590612b955750601e5460ff16155b8015612ba45750601c5460ff16155b15612bb257612bb286612517565b601154600090612bf6908890849060ff600160281b8204811691612be79163010000008204811691600160201b9004166134ab565b612bf191906134ab565b612f87565b90506000612c048289613498565b9050612c108a89612f1e565b3060009081526001602052604081208054849290612c2f9084906134c4565b90915550612c3f90508982612f63565b886001600160a01b03168a6001600160a01b031660008051602061365b83398151915283604051612c7291815260200190565b60405180910390a350505050505050505050565b601854612c9e9030906001600160a01b031683611ede565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612cd357612cd361352f565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612d2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d50919061359e565b81600181518110612d6357612d6361352f565b6001600160a01b03928316602091820292909201015260185460405163791ac94760e01b815291169063791ac94790612da99085906000908690309042906004016135bb565b600060405180830381600087803b158015612dc357600080fd5b505af115801561250f573d6000803e3d6000fd5b80601b6000828254612de991906134c4565b9091555050601854612e069030906001600160a01b031684611ede565b60185460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612e73573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e98919061362c565b5050505050565b601454600090606490612eb59060ff1684613481565b612ebf919061350d565b601454909150600090606490612edd90610100900460ff1685613481565b612ee7919061350d565b90508160156000828254612efb91906134c4565b925050819055508060166000828254612f1491906134c4565b9091555050505050565b6001600160a01b038216600090815260016020526040812054612f42908390613498565b6001600160a01b039093166000908152600160205260409020929092555050565b6001600160a01b038216600090815260016020526040812054612f429083906134c4565b60006127108260ff168460ff1686612f9f9190613481565b612fa99190613481565b612fb3919061350d565b949350505050565b801515811461131d57600080fd5b8035612fd481612fbb565b919050565b600060208284031215612feb57600080fd5b81356117c981612fbb565b6001600160a01b038116811461131d57600080fd5b8035612fd481612ff6565b6000806040838503121561302957600080fd5b823561303481612ff6565b9150602083013561304481612ff6565b809150509250929050565b600060208083528351808285015260005b8181101561307c57858101830151858201604001528201613060565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156130b057600080fd5b82356130bb81612ff6565b946020939093013593505050565b6000602082840312156130db57600080fd5b81356117c981612ff6565b6000806000606084860312156130fb57600080fd5b833561310681612ff6565b9250602084013561311681612ff6565b929592945050506040919091013590565b803560ff81168114612fd457600080fd5b60008060008060008060c0878903121561315157600080fd5b61315a87613127565b955061316860208801613127565b945061317660408801613127565b935061318460608801613127565b925061319260808801613127565b91506131a060a08801613127565b90509295509295509295565b6000602082840312156131be57600080fd5b5035919050565b6000602082840312156131d757600080fd5b813561ffff811681146117c957600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561321257600080fd5b823567ffffffffffffffff8082111561322a57600080fd5b818501915085601f83011261323e57600080fd5b8135602082821115613252576132526131e9565b8160051b604051601f19603f83011681018181108682111715613277576132776131e9565b60405292835281830193508481018201928984111561329557600080fd5b948201945b838610156132ba576132ab8661300b565b8552948201949382019361329a565b96506132c99050878201612fc9565b9450505050509250929050565b6000806000606084860312156132eb57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561331457600080fd5b6117c982613127565b6000806040838503121561333057600080fd5b823561333b81612ff6565b9150602083013561304481612fbb565b60208082526013908201527221b0b63632b91034b990373790373aba3a32b960691b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156133c95781600019048211156133af576133af613378565b808516156133bc57918102915b93841c9390800290613393565b509250929050565b6000826133e057506001611061565b816133ed57506000611061565b8160018114613403576002811461340d57613429565b6001915050611061565b60ff84111561341e5761341e613378565b50506001821b611061565b5060208310610133831016604e8410600b841016171561344c575081810a611061565b613456838361338e565b806000190482111561346a5761346a613378565b029392505050565b60006117c960ff8416836133d1565b808202811582820484141761106157611061613378565b8181038181111561106157611061613378565b60ff818116838216019081111561106157611061613378565b8082018082111561106157611061613378565b6000602082840312156134e957600080fd5b5051919050565b60006020828403121561350257600080fd5b81516117c981612fbb565b60008261352a57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820161355757613557613378565b5060010190565b634e487b7160e01b600052603160045260246000fd5b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b6000602082840312156135b057600080fd5b81516117c981612ff6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561360b5784516001600160a01b0316835293830193918301916001016135e6565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561364157600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205d459d28f75fba954b473077bfb103b9708299f12fce851dfd84837819f9b85464736f6c63430008110033

Deployed Bytecode Sourcemap

27194:21173:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45459:90;;;;;;;;;;-1:-1:-1;45459:90:0;;;;;:::i;:::-;;:::i;27403:66::-;;;;;;;;;;-1:-1:-1;27403:66:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1330:25:1;;;1318:2;1303:18;27403:66:0;;;;;;;;44893:110;;;;;;;;;;-1:-1:-1;44893:110:0;;;;;:::i;:::-;;:::i;45734:94::-;;;;;;;;;;-1:-1:-1;45815:5:0;;;;;;;;;;;;-1:-1:-1;;;45815:5:0;;;;45734:94;;;;;;;:::i;29199:32::-;;;;;;;;;;-1:-1:-1;29199:32:0;;;;;;;;;;;2091:4:1;2079:17;;;2061:36;;2049:2;2034:18;29199:32:0;1919:184:1;46733:193:0;;;;;;;;;;-1:-1:-1;46733:193:0;;;;;:::i;:::-;;:::i;:::-;;;2593:14:1;;2586:22;2568:41;;2556:2;2541:18;46733:193:0;2428:187:1;28117:36:0;;;;;;;;;;-1:-1:-1;28117:36:0;;;;-1:-1:-1;;;28117:36:0;;;;;;;;;2794:6:1;2782:19;;;2764:38;;2752:2;2737:18;28117:36:0;2620:188:1;44741:144:0;;;;;;;;;;-1:-1:-1;44741:144:0;;;;;:::i;:::-;;:::i;40224:104::-;;;;;;;;;;-1:-1:-1;40308:12:0;;40224:104;;28801:29;;;;;;;;;;-1:-1:-1;28801:29:0;;;;;;;;;;;46044:108;;;;;;;;;;-1:-1:-1;46126:18:0;;46044:108;;27856:66;;;;;;;;;;;;;:::i;28016:34::-;;;;;;;;;;-1:-1:-1;28016:34:0;;;;;;;;;;;41328:107;;;;;;;;;;-1:-1:-1;41328:107:0;;;;;:::i;:::-;;:::i;47279:426::-;;;;;;;;;;-1:-1:-1;47279:426:0;;;;;:::i;:::-;;:::i;39425:471::-;;;;;;;;;;-1:-1:-1;39738:11:0;;39425:471;;;39738:11;-1:-1:-1;;;39738:11:0;;;;3813:25:1;;39764:13:0;;;;;3869:2:1;3854:18;;3847:34;-1:-1:-1;;;39792:13:0;;;;3897:18:1;;;3890:34;;;;39820:7:0;;;3955:2:1;3940:18;;3933:34;39738:11:0;39842:8;;;;3998:3:1;3983:19;;3976:35;39865:12:0;;;;;4042:3:1;4027:19;;4020:35;3800:3;3785:19;39425:471:0;3526:535:1;29392:34:0;;;;;;;;;;-1:-1:-1;29392:34:0;;;;;;;-1:-1:-1;;;;;29392:34:0;;;;;;-1:-1:-1;;;;;4230:32:1;;;4212:51;;4200:2;4185:18;29392:34:0;4066:203:1;42612:606:0;;;;;;;;;;-1:-1:-1;42612:606:0;;;;;:::i;:::-;;:::i;45305:146::-;;;;;;;;;;;;;:::i;28931:31::-;;;;;;;;;;-1:-1:-1;28931:31:0;;;;-1:-1:-1;;;28931:31:0;;;;;;28065:37;;;;;;;;;;-1:-1:-1;28065:37:0;;;;;;;;;;;45942:94;;;;;;;;;;-1:-1:-1;27848:1:0;45942:94;;43450:144;;;;;;;;;;-1:-1:-1;43450:144:0;;;;;:::i;:::-;;:::i;27814:35::-;;;;;;;;;;;;27848:1;27814:35;;45159:138;;;;;;;;;;-1:-1:-1;45159:138:0;;;;;:::i;:::-;;:::i;28168:42::-;;;;;;;;;;-1:-1:-1;28168:42:0;;;;;;;;;;;40887:110;;;;;;;;;;;;;:::i;28893:31::-;;;;;;;;;;-1:-1:-1;28893:31:0;;;;;;;;;;;47713:278;;;;;;;;;;-1:-1:-1;47713:278:0;;;;;:::i;:::-;;:::i;36526:25::-;;;;;;;;;;;;;;;;45011:140;;;;;;;;;;-1:-1:-1;45011:140:0;;;;;:::i;:::-;;:::i;29087:27::-;;;;;;;;;;;;;;;;44450:283;;;;;;;;;;-1:-1:-1;44450:283:0;;;;;:::i;:::-;;:::i;28737:24::-;;;;;;;;;;-1:-1:-1;28737:24:0;;;;;;;;29042:38;;;;;;;;;;;;;;;;41214:106;;;;;;;;;;-1:-1:-1;41214:106:0;;;;;:::i;:::-;;:::i;44022:26::-;;;;;;;;;;-1:-1:-1;44022:26:0;;;;;;;;;;;28632:45;;;;;;;;;;;;;;;;29238:30;;;;;;;;;;-1:-1:-1;29238:30:0;;;;;;;;;;;28684:44;;;;;;;;;;;;;;;;29277:31;;;;;;;;;;;;;;;;40442:96;;;;;;;;;;-1:-1:-1;40442:96:0;;;;;:::i;:::-;;:::i;41443:122::-;;;;;;;;;;-1:-1:-1;41443:122:0;;;;;:::i;:::-;;:::i;40637:92::-;;;;;;;;;;-1:-1:-1;40637:92:0;;;;;:::i;:::-;;:::i;27352:44::-;;;;;;;;;;-1:-1:-1;27352:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;39229:188;;;;;;;;;;;;;:::i;:::-;;;;5611:25:1;;;5667:2;5652:18;;5645:34;;;;5584:18;39229:188:0;5437:248:1;46160:162:0;;;;;;;;;;-1:-1:-1;46160:162:0;;;;;:::i;:::-;-1:-1:-1;;;;;46296:18:0;46264:7;46296:18;;;:9;:18;;;;;;;46160:162;18504:140;;;;;;;;;;;;;:::i;28577:48::-;;;;;;;;;;;;;;;;28439:73;;;;;;;;;;;;28470:42;28439:73;;40405:28;;;;;;;;;;-1:-1:-1;40405:28:0;;;;;;;;39904:312;;;;;;;;;;-1:-1:-1;39904:312:0;;;;;:::i;:::-;;:::i;40336:28::-;;;;;;;;;;-1:-1:-1;40336:28:0;;;;;;;;;;;41983:265;;;;;;;;;;;;;:::i;45632:94::-;;;;;;;;;;-1:-1:-1;45684:7:0;18356:6;-1:-1:-1;;;;;18356:6:0;45632:94;;41005:201;;;;;;;;;;-1:-1:-1;41005:201:0;;;;;:::i;:::-;;:::i;44102:166::-;;;;;;;;;;-1:-1:-1;44102:166:0;;;;;:::i;:::-;;:::i;29433:38::-;;;;;;;;;;-1:-1:-1;29433:38:0;;;;-1:-1:-1;;;;;29433:38:0;;;45836:98;;;;;;;;;;-1:-1:-1;45919:7:0;;;;;;;;;;;;-1:-1:-1;;;45919:7:0;;;;45836:98;;28969:29;;;;;;;;;;-1:-1:-1;28969:29:0;;;;-1:-1:-1;;;28969:29:0;;;;;;42256:108;;;;;;;;;;-1:-1:-1;42256:108:0;;;;;:::i;:::-;;:::i;38973:248::-;;;;;;;;;;-1:-1:-1;38973:248:0;;;;;:::i;:::-;;:::i;43602:412::-;;;;;;;;;;-1:-1:-1;43602:412:0;;;;;:::i;:::-;;:::i;27641:42::-;;;;;;;;;;-1:-1:-1;27641:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28521:49;;;;;;;;;;;;;;;;47999:365;;;;;;;;;;-1:-1:-1;47999:365:0;;;;;:::i;:::-;;:::i;46330:199::-;;;;;;;;;;-1:-1:-1;46330:199:0;;;;;:::i;:::-;;:::i;42372:102::-;;;;;;;;;;-1:-1:-1;42372:102:0;;;;;:::i;:::-;;:::i;42482:122::-;;;;;;;;;;-1:-1:-1;42482:122:0;;;;;:::i;:::-;;:::i;27767:40::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27767:40:0;;;;;43340:102;;;;;;;;;;-1:-1:-1;43340:102:0;;;;;:::i;:::-;;:::i;28259:91::-;;;;;;;;;;;;28308:42;28259:91;;29315:29;;;;;;;;;;;;;;;;28768:26;;;;;;;;;;-1:-1:-1;28768:26:0;;;;;;;;;;;40546:83;;;;;;;;;;-1:-1:-1;40546:83:0;;;;;:::i;:::-;;:::i;40768:111::-;;;;;;;;;;-1:-1:-1;40768:111:0;;;;;:::i;:::-;;:::i;27722:38::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27722:38:0;;;;;41573:123;;;;;;;;;;-1:-1:-1;41573:123:0;;;;;:::i;:::-;;:::i;46537:188::-;;;;;;;;;;-1:-1:-1;46537:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;46689:19:0;;;46657:7;46689:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;46537:188;43226:106;;;;;;;;;;-1:-1:-1;43226:106:0;;;;;:::i;:::-;;:::i;41704:271::-;;;;;;;;;;;;;:::i;18652:273::-;;;;;;;;;;-1:-1:-1;18652:273:0;;;;;:::i;:::-;;:::i;40371:27::-;;;;;;;;;;;;;;;;27476:44;;;;;;;;;;-1:-1:-1;27476:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;44276:166;;;;;;;;;;-1:-1:-1;44276:166:0;;;;;:::i;:::-;;:::i;45459:90::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;;;;;;;;;45522:7:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;45522:19:0::1;-1:-1:-1::0;;;;45522:19:0;;::::1;::::0;;;::::1;::::0;;45459:90::o;44893:110::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;44969:17:::1;:26:::0;;-1:-1:-1;;44969:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;44893:110::o;46733:193::-;46837:4;46859:37;46868:10;46880:7;46889:6;46859:8;:37::i;:::-;-1:-1:-1;46914:4:0;46733:193;;;;;:::o;44741:144::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;44845:11:::1;:32:::0;;-1:-1:-1;;44845:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;44741:144::o;27856:66::-;27909:13;27848:1;27909:2;:13;:::i;:::-;27896:26;;:10;:26;:::i;:::-;27856:66;:::o;41328:107::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;41402:25:::1;:9;41419:7:::0;41402:16:::1;:25::i;:::-;;41328:107:::0;:::o;47279:426::-;47413:4;47430:36;47440:6;47448:9;47459:6;47430:9;:36::i;:::-;-1:-1:-1;;;;;47506:19:0;;47479:24;47506:19;;;:11;:19;;;;;;;;47526:10;47506:31;;;;;;;;47556:26;;;;47548:59;;;;-1:-1:-1;;;47548:59:0;;10383:2:1;47548:59:0;;;10365:21:1;10422:2;10402:18;;;10395:30;-1:-1:-1;;;10441:18:1;;;10434:50;10501:18;;47548:59:0;10181:344:1;47548:59:0;47620:55;47629:6;47637:10;47649:25;47668:6;47649:16;:25;:::i;:::-;47620:8;:55::i;:::-;-1:-1:-1;47693:4:0;;47279:426;-1:-1:-1;;;;47279:426:0:o;42612:606::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;42830:14:::1;42905::::0;42847:42:::1;42875:14:::0;42847:12;:42:::1;:::i;:::-;:72;;;;:::i;:::-;42830:89;;42938:8;:15;;42950:3;42938:15;42930:66;;;::::0;-1:-1:-1;;;42930:66:0;;11018:2:1;42930:66:0::1;::::0;::::1;11000:21:1::0;11057:2;11037:18;;;11030:30;11096:34;11076:18;;;11069:62;-1:-1:-1;;;11147:18:1;;;11140:36;11193:19;;42930:66:0::1;10816:402:1::0;42930:66:0::1;-1:-1:-1::0;43007:11:0::1;:26:::0;;::::1;43184::::0;;::::1;::::0;::::1;-1:-1:-1::0;;43155:18:0;;::::1;43007:26;43155:18;-1:-1:-1::0;;43085:30:0;;::::1;-1:-1:-1::0;;;43085:30:0::1;43155:18:::0;;;;-1:-1:-1;;43044:30:0;;::::1;::::0;::::1;-1:-1:-1::0;;43007:26:0;;::::1;-1:-1:-1::0;;;43007:26:0::1;43044:30:::0;;;;-1:-1:-1;;43044:30:0;;;;;;;;;;::::1;43155:18:::0;;;;;;;;43128:16;::::1;43155:18:::0;;;;;;;::::1;43184:26;::::0;;;::::1;::::0;;42612:606::o;45305:146::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;45368::::1;::::0;45353:9:::1;::::0;45368:10:::1;::::0;45392:21:::1;::::0;45353:9;45368:51;45353:9;45368:51;45392:21;45368:10;:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45352:67;;;45438:4;45430:13;;;::::0;::::1;;45341:110;45305:146::o:0;43450:144::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;43554:32:::1;43573:12;:4:::0;43580:5:::1;43573:12;:::i;:::-;43554:18;:32::i;45159:138::-:0;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;45261:20:0::1;45284:5;45261:20:::0;;;:10:::1;:20;::::0;;;;:28;;-1:-1:-1;;45261:28:0::1;::::0;;45159:138::o;40887:110::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;40961:28:::1;:15;40980:8;40961:28;:::i;:::-;40947:10;40937:21;::::0;;;:9:::1;:21;::::0;;;;:52;40887:110::o;47713:278::-;47858:10;47813:4;47905:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;47905:32:0;;;;;;;;;;47813:4;;47835:126;;47883:7;;47905:45;;47940:10;;47905:45;:::i;45011:140::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;45113:23:0::1;;::::0;;;:10:::1;:23;::::0;;;;:30;;-1:-1:-1;;45113:30:0::1;45139:4;45113:30;::::0;;45011:140::o;44450:283::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;44584:30:::1;::::0;-1:-1:-1;;;44584:30:0;;44608:4:::1;44584:30;::::0;::::1;4212:51:1::0;44541:10:0;;44519:12:::1;::::0;-1:-1:-1;;;;;44584:15:0;::::1;::::0;::::1;::::0;4185:18:1;;44584:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44563:51;;44646:1;44633:10;:14;44625:51;;;::::0;-1:-1:-1;;;44625:51:0;;11954:2:1;44625:51:0::1;::::0;::::1;11936:21:1::0;11993:2;11973:18;;;11966:30;12032:26;12012:18;;;12005:54;12076:18;;44625:51:0::1;11752:348:1::0;44625:51:0::1;44687:38;::::0;-1:-1:-1;;;44687:38:0;;44702:10:::1;44687:38;::::0;::::1;12279:51:1::0;12346:18;;;12339:34;;;-1:-1:-1;;;;;44687:14:0;::::1;::::0;::::1;::::0;12252:18:1;;44687:38:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;44508:225;;44450:283:::0;:::o;41214:106::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;41290:22:::1;:9;41304:7:::0;41290:13:::1;:22::i;40442:96::-:0;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;40507:12:::1;:23:::0;;-1:-1:-1;;40507:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;40442:96::o;41443:122::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;41523:34:::1;:21;41549:7:::0;41523:25:::1;:34::i;40637:92::-:0;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;40700:15:::1;:21:::0;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;40700:21:0;;::::1;::::0;;;::::1;::::0;;40637:92::o;39229:188::-;39298:15;;39368:13;27848:1;39368:2;:13;:::i;:::-;39353:12;;:28;;;;:::i;:::-;39395:13;27848:1;39395:2;:13;:::i;:::-;39383:9;;:25;;;;:::i;:::-;39345:64;;;;39229:188;;:::o;18504:140::-;18429:10;18418:7;18329;18356:6;-1:-1:-1;;;;;18356:6:0;;18291:79;18418:7;-1:-1:-1;;;;;18418:21:0;;18410:66;;;;-1:-1:-1;;;18410:66:0;;13058:2:1;18410:66:0;;;13040:21:1;;;13077:18;;;13070:30;13136:34;13116:18;;;13109:62;13188:18;;18410:66:0;12856:356:1;18410:66:0;18603:1:::1;18587:6:::0;;18566:40:::1;::::0;-1:-1:-1;;;;;18587:6:0;;::::1;::::0;18566:40:::1;::::0;18603:1;;18566:40:::1;18634:1;18617:19:::0;;-1:-1:-1;;;;;;18617:19:0::1;::::0;;18504:140::o;39904:312::-;-1:-1:-1;;;;;40061:25:0;;40017:7;40061:25;;;:9;:25;;;;;;40113:15;40101:27;;40097:68;;-1:-1:-1;40152:1:0;;39904:312;-1:-1:-1;;39904:312:0:o;40097:68::-;40182:26;40193:15;40182:8;:26;:::i;:::-;40175:33;39904:312;-1:-1:-1;;;39904:312:0:o;41983:265::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;42057:14:::1;::::0;;42040::::1;42082:18:::0;;;;42165:32:::1;::::0;42057:14;;42128:10:::1;::::0;;;42057:14;;42165:32:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42149:48;;;42216:4;42208:32;;;::::0;-1:-1:-1;;;42208:32:0;;13419:2:1;42208:32:0::1;::::0;::::1;13401:21:1::0;13458:2;13438:18;;;13431:30;-1:-1:-1;;;13477:18:1;;;13470:45;13532:18;;42208:32:0::1;13217:339:1::0;42208:32:0::1;42029:219;;;41983:265::o:0;41005:201::-;41086:10;28390:42;41086:19;41077:29;;;;;;41123:6;41118:81;41139:4;:11;41135:1;:15;41118:81;;;41186:5;41168:6;:15;41175:4;41180:1;41175:7;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;41168:15:0;;;;;;;;;;;-1:-1:-1;41168:15:0;:23;;-1:-1:-1;;41168:23:0;;;;;;;;;;41152:3;;;;:::i;:::-;;;;41118:81;;44102:166;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;44167:5:::1;44164:64;;;44204:12;44189;:27:::0;44164:64:::1;44238:14;:22:::0;;;::::1;;;;-1:-1:-1::0;;44238:22:0;;::::1;::::0;;;::::1;::::0;;44102:166::o;42256:108::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;42331:16:::1;:25:::0;;-1:-1:-1;;42331:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;42256:108::o;38973:248::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;39059:4:::1;39041:24;::::0;;;:9:::1;:24;::::0;;;;;:34;-1:-1:-1;39041:34:0::1;39033:43;;;::::0;::::1;;39105:4;39087:24;::::0;;;:9:::1;:24;::::0;;;;:34;;39115:6;;39087:24;:34:::1;::::0;39115:6;;39087:34:::1;:::i;:::-;;;;;;;;39154:6;39132:18;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;39176:37:0::1;::::0;1330:25:1;;;28470:42:0::1;::::0;39193:4:::1;::::0;-1:-1:-1;;;;;;;;;;;39176:37:0;1318:2:1;1303:18;39176:37:0::1;;;;;;;38973:248:::0;:::o;43602:412::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;43778:13:::1;27848:1;43778:2;:13;:::i;:::-;43760:31;::::0;:15;:31:::1;:::i;:::-;43742:49:::0;-1:-1:-1;43830:13:0::1;27848:1;43830:2;:13;:::i;:::-;43816:27;::::0;:11;:27:::1;:::i;:::-;43802:41:::0;-1:-1:-1;43884:13:0::1;27848:1;43884:2;:13;:::i;:::-;43869:28;::::0;:12;:28:::1;:::i;:::-;43908:12;:30:::0;;;;43949:9:::1;:24:::0;;;;-1:-1:-1;43984:8:0::1;:22:::0;43602:412::o;47999:365::-;48165:10;48104:4;48153:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;48153:32:0;;;;;;;;;;48204:35;;;;48196:60;;;;-1:-1:-1;;;48196:60:0;;14035:2:1;48196:60:0;;;14017:21:1;14074:2;14054:18;;;14047:30;-1:-1:-1;;;14093:18:1;;;14086:42;14145:18;;48196:60:0;13833:336:1;48196:60:0;48269:65;48278:10;48290:7;48299:34;48318:15;48299:16;:34;:::i;48269:65::-;-1:-1:-1;48352:4:0;;47999:365;-1:-1:-1;;;47999:365:0:o;46330:199::-;46437:4;46459:40;46469:10;46481:9;46492:6;46459:9;:40::i;42372:102::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;42439:16:::1;:27:::0;;;::::1;;;;-1:-1:-1::0;;42439:27:0;;::::1;::::0;;;::::1;::::0;;42372:102::o;42482:122::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;42566:12:::1;:30:::0;42482:122::o;43340:102::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;43411:12:::1;:23:::0;;::::1;::::0;;::::1;;;-1:-1:-1::0;;43411:23:0;;::::1;::::0;;;::::1;::::0;;43340:102::o;40546:83::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;40606:9:::1;:15:::0;40546:83::o;40768:111::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40847:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:24;;-1:-1:-1;;40847:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;40768:111::o;41573:123::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;41651:37:::1;:21;41680:7:::0;41651:28:::1;:37::i;43226:106::-:0;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;43299:14:::1;:25:::0;;-1:-1:-1;;43299:25:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;43226:106::o;41704:271::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;41780:16:::1;::::0;;41763:14:::1;41807:20:::0;;;;41892:32:::1;::::0;41780:16;;41855:10:::1;::::0;;;41780:16;;41892:32:::1;11223:205:1::0;18652:273:0;18429:10;18418:7;18329;18356:6;-1:-1:-1;;;;;18356:6:0;;18291:79;18418:7;-1:-1:-1;;;;;18418:21:0;;18410:66;;;;-1:-1:-1;;;18410:66:0;;13058:2:1;18410:66:0;;;13040:21:1;;;13077:18;;;13070:30;13136:34;13116:18;;;13109:62;13188:18;;18410:66:0;12856:356:1;18410:66:0;-1:-1:-1;;;;;18747:22:0;::::1;18725:110;;;::::0;-1:-1:-1;;;18725:110:0;;14376:2:1;18725:110:0::1;::::0;::::1;14358:21:1::0;14415:2;14395:18;;;14388:30;14454:34;14434:18;;;14427:62;-1:-1:-1;;;14505:18:1;;;14498:36;14551:19;;18725:110:0::1;14174:402:1::0;18725:110:0::1;18872:6;::::0;;18851:38:::1;::::0;-1:-1:-1;;;;;18851:38:0;;::::1;::::0;18872:6;::::1;::::0;18851:38:::1;::::0;::::1;18900:6;:17:::0;;-1:-1:-1;;;;;;18900:17:0::1;-1:-1:-1::0;;;;;18900:17:0;;;::::1;::::0;;;::::1;::::0;;18652:273::o;44276:166::-;29573:19;29581:10;29573:7;:19::i;:::-;29565:51;;;;-1:-1:-1;;;29565:51:0;;;;;;;:::i;:::-;44388:22:::1;:46:::0;;-1:-1:-1;;;;;44388:46:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;44388:46:0;;::::1;::::0;;;::::1;::::0;;44276:166::o;25449:175::-;25537:4;25566:50;25571:3;-1:-1:-1;;;;;25591:23:0;;25566:4;:50::i;29644:116::-;29697:4;18356:6;;-1:-1:-1;;;;;29721:15:0;;;18356:6;;29721:15;;:31;;-1:-1:-1;;;;;;;29740:12:0;;;;;:6;:12;;;;;;;;;29644:116::o;46934:337::-;-1:-1:-1;;;;;47062:20:0;;47054:50;;;;-1:-1:-1;;;47054:50:0;;14783:2:1;47054:50:0;;;14765:21:1;14822:2;14802:18;;;14795:30;-1:-1:-1;;;14841:18:1;;;14834:47;14898:18;;47054:50:0;14581:341:1;47054:50:0;-1:-1:-1;;;;;47123:21:0;;47115:49;;;;-1:-1:-1;;;47115:49:0;;15129:2:1;47115:49:0;;;15111:21:1;15168:2;15148:18;;;15141:30;-1:-1:-1;;;15187:18:1;;;15180:45;15242:18;;47115:49:0;14927:339:1;47115:49:0;-1:-1:-1;;;;;47177:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;47230:33;;1330:25:1;;;47230:33:0;;1303:18:1;47230:33:0;;;;;;;46934:337;;;:::o;25632:181::-;25723:4;25752:53;25760:3;-1:-1:-1;;;;;25780:23:0;;25752:7;:53::i;30778:2412::-;-1:-1:-1;;;;;30909:20:0;;30901:51;;;;-1:-1:-1;;;30901:51:0;;15473:2:1;30901:51:0;;;15455:21:1;15512:2;15492:18;;;15485:30;-1:-1:-1;;;15531:18:1;;;15524:48;15589:18;;30901:51:0;15271:342:1;30901:51:0;-1:-1:-1;;;;;30971:23:0;;30963:52;;;;-1:-1:-1;;;30963:52:0;;15820:2:1;30963:52:0;;;15802:21:1;15859:2;15839:18;;;15832:30;-1:-1:-1;;;15878:18:1;;;15871:46;15934:18;;30963:52:0;15618:340:1;30963:52:0;31030:11;;;;31026:163;;;-1:-1:-1;;;;;31085:18:0;;;;;;:10;:18;;;;;;;;31084:19;:45;;;;-1:-1:-1;;;;;;31108:21:0;;;;;;:10;:21;;;;;;;;31107:22;31084:45;31058:119;;;;-1:-1:-1;;;31058:119:0;;16165:2:1;31058:119:0;;;16147:21:1;16204:2;16184:18;;;16177:30;-1:-1:-1;;;16223:18:1;;;16216:42;16275:18;;31058:119:0;15963:336:1;31058:119:0;31201:15;31220:26;:9;31239:6;31220:18;:26::i;:::-;:72;;;-1:-1:-1;31263:29:0;:9;31282;31263:18;:29::i;:::-;31220:103;;;-1:-1:-1;;;;;;31309:14:0;;;;;;:6;:14;;;;;;;;31220:103;:137;;;-1:-1:-1;;;;;;31340:17:0;;;;;;:6;:17;;;;;;;;31220:137;31201:157;-1:-1:-1;31371:23:0;-1:-1:-1;;;;;31398:23:0;;31416:4;31398:23;;:66;;-1:-1:-1;;;;;;31438:26:0;;31459:4;31438:26;31398:66;31517:19;;31371:94;;-1:-1:-1;31478:24:0;;-1:-1:-1;;;;;31507:29:0;;;31517:19;;;;;31507:29;:72;;;;-1:-1:-1;;;;;;31553:26:0;;28308:42;31553:26;31507:72;31506:152;;;-1:-1:-1;31611:19:0;;-1:-1:-1;;;;;31598:32:0;;;31611:19;;;;;31598:32;:59;;;;-1:-1:-1;;;;;;31634:23:0;;28308:42;31634:23;31598:59;31478:181;;31690:18;:41;;;;31712:19;31690:41;:55;;;;31735:10;31690:55;31672:1511;;;31772:43;31789:6;31797:9;31808:6;31772:16;:43::i;:::-;31672:1511;;;31853:14;;;;;;;31848:1026;;18329:7;18356:6;-1:-1:-1;;;;;31894:17:0;;;18356:6;;31894:17;;;;:41;;-1:-1:-1;18329:7:0;18356:6;-1:-1:-1;;;;;31915:20:0;;;18356:6;;31915:20;;31894:41;31893:86;;;-1:-1:-1;;;;;;31942:14:0;;;;;;:6;:14;;;;;;;;31941:15;:37;;;;-1:-1:-1;;;;;;31961:17:0;;;;;;:6;:17;;;;;;;;31960:18;31941:37;31888:397;;;32011:7;;-1:-1:-1;;;32011:7:0;;;;32008:258;;;32073:9;-1:-1:-1;;;;;32056:30:0;32065:6;-1:-1:-1;;;;;32056:30:0;-1:-1:-1;;;;;;;;;;;32084:1:0;32056:30;;;;1330:25:1;;1318:2;1303:18;;1184:177;32056:30:0;;;;;;;;32117:7;;;30778:2412;;;:::o;32008:258::-;32196:14;;;;;;;32188:50;;;;-1:-1:-1;;;32188:50:0;;16696:2:1;32188:50:0;;;16678:21:1;16735:2;16715:18;;;16708:30;16774:25;16754:18;;;16747:53;16817:18;;32188:50:0;16494:347:1;32188:50:0;31848:1026;;;32432:12;;32415;;32400:27;;:12;:27;:::i;:::-;32399:45;32395:464;;18329:7;18356:6;-1:-1:-1;;;;;32475:17:0;;;18356:6;;32475:17;;;;:41;;-1:-1:-1;18329:7:0;18356:6;-1:-1:-1;;;;;32496:20:0;;;18356:6;;32496:20;;32475:41;32474:86;;;-1:-1:-1;;;;;;32523:14:0;;;;;;:6;:14;;;;;;;;32522:15;:37;;;;-1:-1:-1;;;;;;32542:17:0;;;;;;:6;:17;;;;;;;;32541:18;32522:37;32469:371;;;32593:7;;-1:-1:-1;;;32593:7:0;;;;32589:228;;;32655:9;-1:-1:-1;;;;;32638:30:0;32647:6;-1:-1:-1;;;;;32638:30:0;-1:-1:-1;;;;;;;;;;;32666:1:0;32638:30;;;;1330:25:1;;1318:2;1303:18;;1184:177;32589:228:0;32770:19;;-1:-1:-1;;;32770:19:0;;17048:2:1;32770:19:0;;;17030:21:1;17087:1;17067:18;;;17060:29;-1:-1:-1;;;17105:18:1;;;17098:38;17153:18;;32770:19:0;16846:331:1;32589:228:0;32927:19;;32904:10;;-1:-1:-1;;;;;32917:29:0;;;32927:19;;;;;32917:29;;:73;;-1:-1:-1;;;;;;32967:23:0;;28308:42;32967:23;32917:73;33032:19;;32904:86;;-1:-1:-1;33005:11:0;;-1:-1:-1;;;;;33019:32:0;;;33032:19;;;;;33019:32;;:79;;-1:-1:-1;;;;;;33072:26:0;;28308:42;33072:26;33019:79;33005:93;;33113:56;33128:6;33136:9;33147:6;33155:5;33162:6;33113:14;:56::i;:::-;31833:1350;;31672:1511;30890:2300;;;30778:2412;;;:::o;36749:1317::-;36641:27;:34;;-1:-1:-1;;36641:34:0;36671:4;36641:34;;;;;;36870:4:::1;36641:27:::0;36852:24;;;::::1;::::0;;;;;;;;36921:13:::1;::::0;36852:24;;36641:27;36905:29:::1;::::0;-1:-1:-1;;;36921:13:0;::::1;36641:34:::0;36921:13;;::::1;::::0;36905;;::::1;;:29;:::i;:::-;36887:47;;;;36945:19;36967:9;;36945:31;;37005:8;36991:11;:22;36987:129;;;37034:12;::::0;::::1;;37030:75;;;-1:-1:-1::0;37081:8:0;37030:75:::1;37148:11;37130:15;:29;:46;;;-1:-1:-1::0;37163:13:0::1;::::0;::::1;::::0;37130:46:::1;37126:85;;;37193:7;;;;;37126:85;37264:13;::::0;37221:25:::1;::::0;37249:40:::1;::::0;::::1;::::0;37250:27:::1;::::0;37264:13;;::::1;;;37250:11:::0;:27:::1;:::i;:::-;37249:40;;;;:::i;:::-;37343:13;::::0;37221:68;;-1:-1:-1;37300:25:0::1;::::0;37328:40:::1;::::0;::::1;::::0;37329:27:::1;::::0;-1:-1:-1;;;37343:13:0;::::1;;;37329:11:::0;:27:::1;:::i;:::-;37328:40;;;;:::i;:::-;37420:11;::::0;37300:68;;-1:-1:-1;37379:23:0::1;::::0;37405:38:::1;::::0;::::1;::::0;37406:25:::1;::::0;-1:-1:-1;;;37420:11:0;::::1;;;37406::::0;:25:::1;:::i;:::-;37405:38;;;;:::i;:::-;37379:64:::0;-1:-1:-1;37456:16:0::1;37475:21;37495:1;37475:17:::0;:21:::1;:::i;:::-;37456:40:::0;-1:-1:-1;37507:19:0::1;37529:28;37456:40:::0;37529:17;:28:::1;:::i;:::-;37507:50:::0;-1:-1:-1;37570:17:0::1;37650:15:::0;37590:44:::1;37617:17:::0;37507:50;37590:44:::1;:::i;:::-;:75;;;;:::i;:::-;37570:95:::0;-1:-1:-1;37704:21:0::1;37736:27;37570:95:::0;37736:16:::1;:27::i;:::-;37774:14;37792:41;37816:17:::0;37792:21:::1;:41;:::i;:::-;37774:60:::0;-1:-1:-1;37845:14:0::1;37887:9:::0;37863:20:::1;37872:11:::0;37774:60;37863:20:::1;:::i;:::-;37862:34;;;;:::i;:::-;37845:51;;37907:31;37921:8;37931:6;37907:13;:31::i;:::-;37949:20;37973:41;37997:17:::0;37973:21:::1;:41;:::i;:::-;37949:66;;38026:32;38045:12;38026:18;:32::i;:::-;36815:1251;;;;;;;;;;;;;36686:1;-1:-1:-1::0;36698:27:0;:35;;-1:-1:-1;;36698:35:0;;;36749:1317::o;23070:291::-;23133:4;24107:19;;;:12;;;:19;;;;;;23150:204;;-1:-1:-1;23193:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;23253:18;;23231:19;;;:12;;;:19;;;;;;:40;;;;23286:11;;23150:204;-1:-1:-1;23337:5:0;23330:12;;23369:601;23435:4;23473:19;;;:12;;;:19;;;;;;23509:15;;23505:458;;23541:21;23565:14;23578:1;23565:10;:14;:::i;:::-;23614:18;;23541:38;;-1:-1:-1;23594:17:0;;23614:22;;23635:1;;23614:22;:::i;:::-;23594:42;;23653:17;23673:3;:11;;23685:9;23673:22;;;;;;;;:::i;:::-;;;;;;;;;23653:42;;23741:9;23712:3;:11;;23724:13;23712:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;23765:23;;;:12;;;:23;;;;;;:36;;;23818:17;;23765:3;;23818:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;23859:3;:12;;:19;23872:5;23859:19;;;;;;;;;;;23852:26;;;23902:4;23895:11;;;;;;;;23505:458;23946:5;23939:12;;;;;25821:199;-1:-1:-1;;;;;25987:23:0;;25928:4;24107:19;;;:12;;;:19;;;;;;:24;;25957:55;23978:161;35305:381;-1:-1:-1;;;;;35459:17:0;;35435:21;35459:17;;;:9;:17;;;;;;35495:23;;;;35487:60;;;;-1:-1:-1;;;35487:60:0;;17516:2:1;35487:60:0;;;17498:21:1;17555:2;17535:18;;;17528:30;-1:-1:-1;;;17574:18:1;;;17567:54;17638:18;;35487:60:0;17314:348:1;35487:60:0;35558:28;35571:6;35579;35558:12;:28::i;:::-;35597;35607:9;35618:6;35597:9;:28::i;:::-;35660:9;-1:-1:-1;;;;;35643:35:0;35652:6;-1:-1:-1;;;;;35643:35:0;-1:-1:-1;;;;;;;;;;;35671:6:0;35643:35;;;;1330:25:1;;1318:2;1303:18;;1184:177;35643:35:0;;;;;;;;35424:262;35305:381;;;:::o;33198:2099::-;-1:-1:-1;;;;;33396:20:0;;;33369:24;33396:20;;;:9;:20;;;;;;;33451:17;;;;;;;;33487:23;;;;33479:60;;;;-1:-1:-1;;;33479:60:0;;17516:2:1;33479:60:0;;;17498:21:1;17555:2;17535:18;;;17528:30;-1:-1:-1;;;17574:18:1;;;17567:54;17638:18;;33479:60:0;17314:348:1;33479:60:0;33576:1;33564:9;;:13;;;;:::i;:::-;33552:9;:25;33590:9;33610:1087;;;;33642:38;:21;33673:6;33642:30;:38::i;:::-;33637:297;;-1:-1:-1;;;;;33731:17:0;;;;;;:9;:17;;;;;;33752:15;-1:-1:-1;33731:36:0;;:56;;-1:-1:-1;33771:16:0;;;;;;;33731:56;33701:148;;;;-1:-1:-1;;;33701:148:0;;17869:2:1;33701:148:0;;;17851:21:1;17908:2;17888:18;;;17881:30;-1:-1:-1;;;17927:18:1;;;17920:48;17985:18;;33701:148:0;17667:342:1;33701:148:0;33906:12;;33888:30;;:15;:30;:::i;:::-;-1:-1:-1;;;;;33868:17:0;;;;;;:9;:17;;;;;:50;33637:297;33968:9;;33958:6;:19;;33950:47;;;;-1:-1:-1;;;33950:47:0;;18216:2:1;33950:47:0;;;18198:21:1;18255:2;18235:18;;;18228:30;-1:-1:-1;;;18274:18:1;;;18267:45;18329:18;;33950:47:0;18014:339:1;33950:47:0;-1:-1:-1;34018:8:0;;;;;;;33610:1087;;;34048:5;34044:653;;;34125:12;;34096:25;34115:6;34096:16;:25;:::i;:::-;:41;;34070:119;;;;-1:-1:-1;;;34070:119:0;;;;;;;:::i;:::-;34222:8;;34212:6;:18;;34204:47;;;;-1:-1:-1;;;34204:47:0;;;;;;;:::i;:::-;-1:-1:-1;34272:7:0;;;;34044:653;;;34367:12;;34338:25;34357:6;34338:16;:25;:::i;:::-;:41;;34312:119;;;;-1:-1:-1;;;34312:119:0;;;;;;;:::i;:::-;34451:38;:21;34482:6;34451:30;:38::i;:::-;34446:206;;-1:-1:-1;;;;;34538:17:0;;;;;;:9;:17;;;;;;34559:15;-1:-1:-1;34538:36:0;;:56;;-1:-1:-1;34578:16:0;;;;;;;34538:56;34508:144;;;;-1:-1:-1;;;34508:144:0;;18905:2:1;34508:144:0;;;18887:21:1;18944:2;18924:18;;;18917:30;-1:-1:-1;;;18963:18:1;;;18956:44;19017:18;;34508:144:0;18703:338:1;34508:144:0;-1:-1:-1;34673:12:0;;;;;;;34044:653;34736:19;;-1:-1:-1;;;;;34726:29:0;;;34736:19;;;;;34726:29;;;;34725:67;;-1:-1:-1;34775:16:0;;;;34774:17;34725:67;:114;;;;-1:-1:-1;34811:27:0;;;;34810:28;34725:114;34707:170;;;34851:26;34870:6;34851:18;:26::i;:::-;35011:11;;34888:21;;34912:121;;34940:6;;34961:3;;35011:11;-1:-1:-1;;;35011:11:0;;;;;34979:29;;34995:13;;;;;;-1:-1:-1;;;34979:13:0;;;:29;:::i;:::-;:43;;;;:::i;:::-;34912:13;:121::i;:::-;34888:145;-1:-1:-1;35044:19:0;35066:24;34888:145;35066:6;:24;:::i;:::-;35044:46;;35103:28;35116:6;35124;35103:12;:28::i;:::-;35162:4;35144:24;;;;:9;:24;;;;;:41;;35172:13;;35144:24;:41;;35172:13;;35144:41;:::i;:::-;;;;-1:-1:-1;35198:33:0;;-1:-1:-1;35208:9:0;35219:11;35198:9;:33::i;:::-;35266:9;-1:-1:-1;;;;;35249:40:0;35258:6;-1:-1:-1;;;;;35249:40:0;-1:-1:-1;;;;;;;;;;;35277:11:0;35249:40;;;;1330:25:1;;1318:2;1303:18;;1184:177;35249:40:0;;;;;;;;33358:1939;;;;;33198:2099;;;;;:::o;38074:455::-;38167:14;;38135:56;;38152:4;;-1:-1:-1;;;;;38167:14:0;38184:6;38135:8;:56::i;:::-;38226:16;;;38240:1;38226:16;;;;;;;;38202:21;;38226:16;;;;;;;;;;-1:-1:-1;38226:16:0;38202:40;;38271:4;38253;38258:1;38253:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;38253:23:0;;;:7;;;;;;;;;;:23;;;;38297:14;;:21;;;-1:-1:-1;;;38297:21:0;;;;:14;;;;;:19;;:21;;;;;38253:7;;38297:21;;;;;:14;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38287:4;38292:1;38287:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;38287:31:0;;;:7;;;;;;;;;:31;38331:14;;:190;;-1:-1:-1;;;38331:190:0;;:14;;;:65;;:190;;38411:6;;38331:14;;38448:4;;38475;;38495:15;;38331:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38537:399;38633:9;38619:10;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;38685:14:0;;38653:61;;38670:4;;-1:-1:-1;;;;;38685:14:0;38702:11;38653:8;:61::i;:::-;38725:14;;:203;;-1:-1:-1;;;38725:203:0;;38796:4;38725:203;;;20628:34:1;;;20678:18;;;20671:34;;;38725:14:0;20721:18:1;;;20714:34;;;20764:18;;;20757:34;20807:19;;;20800:44;38902:15:0;20860:19:1;;;20853:35;-1:-1:-1;;;;;38725:14:0;;;;:30;;38763:9;;20562:19:1;;38725:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;38537:399;;:::o;36231:287::-;36335:14;;36297:22;;36353:3;;36323:26;;36335:14;;36323:9;:26;:::i;:::-;36322:34;;;;:::i;:::-;36403:12;;36297:59;;-1:-1:-1;36367:20:0;;36419:3;;36391:24;;36403:12;;;;;36391:9;:24;:::i;:::-;36390:32;;;;:::i;:::-;36367:55;;36455:14;36435:16;;:34;;;;;;;:::i;:::-;;;;;;;;36498:12;36480:14;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;36231:287:0:o;36062:161::-;-1:-1:-1;;;;;36153:15:0;;36133:17;36153:15;;;:9;:15;;;;;;:24;;36171:6;;36153:24;:::i;:::-;-1:-1:-1;;;;;36188:15:0;;;;;;;:9;:15;;;;;:27;;;;-1:-1:-1;;36062:161:0:o;35896:158::-;-1:-1:-1;;;;;35984:15:0;;35964:17;35984:15;;;:9;:15;;;;;;:24;;36002:6;;35984:24;:::i;35694:194::-;35818:7;35875:5;35861:10;35846:25;;35855:3;35846:12;;:6;:12;;;;:::i;:::-;:25;;;;:::i;:::-;35845:35;;;;:::i;:::-;35838:42;35694:194;-1:-1:-1;;;;35694:194:0:o;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:128;202:20;;231:28;202:20;231:28;:::i;:::-;137:128;;;:::o;270:241::-;326:6;379:2;367:9;358:7;354:23;350:32;347:52;;;395:1;392;385:12;347:52;434:9;421:23;453:28;475:5;453:28;:::i;516:131::-;-1:-1:-1;;;;;591:31:1;;581:42;;571:70;;637:1;634;627:12;652:134;720:20;;749:31;720:20;749:31;:::i;791:388::-;859:6;867;920:2;908:9;899:7;895:23;891:32;888:52;;;936:1;933;926:12;888:52;975:9;962:23;994:31;1019:5;994:31;:::i;:::-;1044:5;-1:-1:-1;1101:2:1;1086:18;;1073:32;1114:33;1073:32;1114:33;:::i;:::-;1166:7;1156:17;;;791:388;;;;;:::o;1366:548::-;1478:4;1507:2;1536;1525:9;1518:21;1568:6;1562:13;1611:6;1606:2;1595:9;1591:18;1584:34;1636:1;1646:140;1660:6;1657:1;1654:13;1646:140;;;1755:14;;;1751:23;;1745:30;1721:17;;;1740:2;1717:26;1710:66;1675:10;;1646:140;;;1650:3;1835:1;1830:2;1821:6;1810:9;1806:22;1802:31;1795:42;1905:2;1898;1894:7;1889:2;1881:6;1877:15;1873:29;1862:9;1858:45;1854:54;1846:62;;;;1366:548;;;;:::o;2108:315::-;2176:6;2184;2237:2;2225:9;2216:7;2212:23;2208:32;2205:52;;;2253:1;2250;2243:12;2205:52;2292:9;2279:23;2311:31;2336:5;2311:31;:::i;:::-;2361:5;2413:2;2398:18;;;;2385:32;;-1:-1:-1;;;2108:315:1:o;2813:247::-;2872:6;2925:2;2913:9;2904:7;2900:23;2896:32;2893:52;;;2941:1;2938;2931:12;2893:52;2980:9;2967:23;2999:31;3024:5;2999:31;:::i;3065:456::-;3142:6;3150;3158;3211:2;3199:9;3190:7;3186:23;3182:32;3179:52;;;3227:1;3224;3217:12;3179:52;3266:9;3253:23;3285:31;3310:5;3285:31;:::i;:::-;3335:5;-1:-1:-1;3392:2:1;3377:18;;3364:32;3405:33;3364:32;3405:33;:::i;:::-;3065:456;;3457:7;;-1:-1:-1;;;3511:2:1;3496:18;;;;3483:32;;3065:456::o;4274:156::-;4340:20;;4400:4;4389:16;;4379:27;;4369:55;;4420:1;4417;4410:12;4435:535;4527:6;4535;4543;4551;4559;4567;4620:3;4608:9;4599:7;4595:23;4591:33;4588:53;;;4637:1;4634;4627:12;4588:53;4660:27;4677:9;4660:27;:::i;:::-;4650:37;;4706:36;4738:2;4727:9;4723:18;4706:36;:::i;:::-;4696:46;;4761:36;4793:2;4782:9;4778:18;4761:36;:::i;:::-;4751:46;;4816:36;4848:2;4837:9;4833:18;4816:36;:::i;:::-;4806:46;;4871:37;4903:3;4892:9;4888:19;4871:37;:::i;:::-;4861:47;;4927:37;4959:3;4948:9;4944:19;4927:37;:::i;:::-;4917:47;;4435:535;;;;;;;;:::o;4975:180::-;5034:6;5087:2;5075:9;5066:7;5062:23;5058:32;5055:52;;;5103:1;5100;5093:12;5055:52;-1:-1:-1;5126:23:1;;4975:180;-1:-1:-1;4975:180:1:o;5160:272::-;5218:6;5271:2;5259:9;5250:7;5246:23;5242:32;5239:52;;;5287:1;5284;5277:12;5239:52;5326:9;5313:23;5376:6;5369:5;5365:18;5358:5;5355:29;5345:57;;5398:1;5395;5388:12;5690:127;5751:10;5746:3;5742:20;5739:1;5732:31;5782:4;5779:1;5772:15;5806:4;5803:1;5796:15;5822:1191;5912:6;5920;5973:2;5961:9;5952:7;5948:23;5944:32;5941:52;;;5989:1;5986;5979:12;5941:52;6029:9;6016:23;6058:18;6099:2;6091:6;6088:14;6085:34;;;6115:1;6112;6105:12;6085:34;6153:6;6142:9;6138:22;6128:32;;6198:7;6191:4;6187:2;6183:13;6179:27;6169:55;;6220:1;6217;6210:12;6169:55;6256:2;6243:16;6278:4;6301:2;6297;6294:10;6291:36;;;6307:18;;:::i;:::-;6353:2;6350:1;6346:10;6385:2;6379:9;6448:2;6444:7;6439:2;6435;6431:11;6427:25;6419:6;6415:38;6503:6;6491:10;6488:22;6483:2;6471:10;6468:18;6465:46;6462:72;;;6514:18;;:::i;:::-;6550:2;6543:22;6600:18;;;6634:15;;;;-1:-1:-1;6676:11:1;;;6672:20;;;6704:19;;;6701:39;;;6736:1;6733;6726:12;6701:39;6760:11;;;;6780:148;6796:6;6791:3;6788:15;6780:148;;;6862:23;6881:3;6862:23;:::i;:::-;6850:36;;6813:12;;;;6906;;;;6780:148;;;6947:6;-1:-1:-1;6972:35:1;;-1:-1:-1;6988:18:1;;;6972:35;:::i;:::-;6962:45;;;;;;5822:1191;;;;;:::o;7250:316::-;7327:6;7335;7343;7396:2;7384:9;7375:7;7371:23;7367:32;7364:52;;;7412:1;7409;7402:12;7364:52;-1:-1:-1;;7435:23:1;;;7505:2;7490:18;;7477:32;;-1:-1:-1;7556:2:1;7541:18;;;7528:32;;7250:316;-1:-1:-1;7250:316:1:o;7571:182::-;7628:6;7681:2;7669:9;7660:7;7656:23;7652:32;7649:52;;;7697:1;7694;7687:12;7649:52;7720:27;7737:9;7720:27;:::i;7758:382::-;7823:6;7831;7884:2;7872:9;7863:7;7859:23;7855:32;7852:52;;;7900:1;7897;7890:12;7852:52;7939:9;7926:23;7958:31;7983:5;7958:31;:::i;:::-;8008:5;-1:-1:-1;8065:2:1;8050:18;;8037:32;8078:30;8037:32;8078:30;:::i;8145:343::-;8347:2;8329:21;;;8386:2;8366:18;;;8359:30;-1:-1:-1;;;8420:2:1;8405:18;;8398:49;8479:2;8464:18;;8145:343::o;8493:127::-;8554:10;8549:3;8545:20;8542:1;8535:31;8585:4;8582:1;8575:15;8609:4;8606:1;8599:15;8625:422;8714:1;8757:5;8714:1;8771:270;8792:7;8782:8;8779:21;8771:270;;;8851:4;8847:1;8843:6;8839:17;8833:4;8830:27;8827:53;;;8860:18;;:::i;:::-;8910:7;8900:8;8896:22;8893:55;;;8930:16;;;;8893:55;9009:22;;;;8969:15;;;;8771:270;;;8775:3;8625:422;;;;;:::o;9052:806::-;9101:5;9131:8;9121:80;;-1:-1:-1;9172:1:1;9186:5;;9121:80;9220:4;9210:76;;-1:-1:-1;9257:1:1;9271:5;;9210:76;9302:4;9320:1;9315:59;;;;9388:1;9383:130;;;;9295:218;;9315:59;9345:1;9336:10;;9359:5;;;9383:130;9420:3;9410:8;9407:17;9404:43;;;9427:18;;:::i;:::-;-1:-1:-1;;9483:1:1;9469:16;;9498:5;;9295:218;;9597:2;9587:8;9584:16;9578:3;9572:4;9569:13;9565:36;9559:2;9549:8;9546:16;9541:2;9535:4;9532:12;9528:35;9525:77;9522:159;;;-1:-1:-1;9634:19:1;;;9666:5;;9522:159;9713:34;9738:8;9732:4;9713:34;:::i;:::-;9783:6;9779:1;9775:6;9771:19;9762:7;9759:32;9756:58;;;9794:18;;:::i;:::-;9832:20;;9052:806;-1:-1:-1;;;9052:806:1:o;9863:140::-;9921:5;9950:47;9991:4;9981:8;9977:19;9971:4;9950:47;:::i;10008:168::-;10081:9;;;10112;;10129:15;;;10123:22;;10109:37;10099:71;;10150:18;;:::i;10530:128::-;10597:9;;;10618:11;;;10615:37;;;10632:18;;:::i;10663:148::-;10751:4;10730:12;;;10744;;;10726:31;;10769:13;;10766:39;;;10785:18;;:::i;11433:125::-;11498:9;;;11519:10;;;11516:36;;;11532:18;;:::i;11563:184::-;11633:6;11686:2;11674:9;11665:7;11661:23;11657:32;11654:52;;;11702:1;11699;11692:12;11654:52;-1:-1:-1;11725:16:1;;11563:184;-1:-1:-1;11563:184:1:o;12384:245::-;12451:6;12504:2;12492:9;12483:7;12479:23;12475:32;12472:52;;;12520:1;12517;12510:12;12472:52;12552:9;12546:16;12571:28;12593:5;12571:28;:::i;12634:217::-;12674:1;12700;12690:132;;12744:10;12739:3;12735:20;12732:1;12725:31;12779:4;12776:1;12769:15;12807:4;12804:1;12797:15;12690:132;-1:-1:-1;12836:9:1;;12634:217::o;13561:127::-;13622:10;13617:3;13613:20;13610:1;13603:31;13653:4;13650:1;13643:15;13677:4;13674:1;13667:15;13693:135;13732:3;13753:17;;;13750:43;;13773:18;;:::i;:::-;-1:-1:-1;13820:1:1;13809:13;;13693:135::o;17182:127::-;17243:10;17238:3;17234:20;17231:1;17224:31;17274:4;17271:1;17264:15;17298:4;17295:1;17288:15;18358:340;18560:2;18542:21;;;18599:2;18579:18;;;18572:30;-1:-1:-1;;;18633:2:1;18618:18;;18611:46;18689:2;18674:18;;18358:340::o;19046:251::-;19116:6;19169:2;19157:9;19148:7;19144:23;19140:32;19137:52;;;19185:1;19182;19175:12;19137:52;19217:9;19211:16;19236:31;19261:5;19236:31;:::i;19302:980::-;19564:4;19612:3;19601:9;19597:19;19643:6;19632:9;19625:25;19669:2;19707:6;19702:2;19691:9;19687:18;19680:34;19750:3;19745:2;19734:9;19730:18;19723:31;19774:6;19809;19803:13;19840:6;19832;19825:22;19878:3;19867:9;19863:19;19856:26;;19917:2;19909:6;19905:15;19891:29;;19938:1;19948:195;19962:6;19959:1;19956:13;19948:195;;;20027:13;;-1:-1:-1;;;;;20023:39:1;20011:52;;20118:15;;;;20083:12;;;;20059:1;19977:9;19948:195;;;-1:-1:-1;;;;;;;20199:32:1;;;;20194:2;20179:18;;20172:60;-1:-1:-1;;;20263:3:1;20248:19;20241:35;20160:3;19302:980;-1:-1:-1;;;19302:980:1:o;20899:306::-;20987:6;20995;21003;21056:2;21044:9;21035:7;21031:23;21027:32;21024:52;;;21072:1;21069;21062:12;21024:52;21101:9;21095:16;21085:26;;21151:2;21140:9;21136:18;21130:25;21120:35;;21195:2;21184:9;21180:18;21174:25;21164:35;;20899:306;;;;;:::o

Swarm Source

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