ETH Price: $2,960.25 (-1.00%)
Gas: 8 Gwei

Token

The Rare Antiquities Token Ltd (RAT)
 

Overview

Max Total Supply

500,000,000,000 RAT

Holders

762 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
280,332.719801301 RAT

Value
$0.00
0x5382a458B438B053765Ae7e242B0b4d73Fe66d3D
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The Rare Antiquities Token contract has migrated to 0x57be5cf6cbd6843a1470eeabef8498347821366e.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TheRareAntiquitiesTokenLtd

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-12
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.9;
interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}

pragma solidity >=0.5.0;
interface IWETH {
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function deposit() external payable;
    function transfer(address to, uint value) external returns (bool);
    function withdraw(uint) external;
}

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
 
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

abstract contract Context {
    //function _msgSender() internal view virtual returns (address payable) {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

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

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    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");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

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

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

}

pragma solidity >=0.5.0;
interface IDEGENSwapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function pairExist(address pair) external view returns (bool);

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
    function routerInitialize(address) external;
    function routerAddress() external view returns (address);
}

pragma solidity >=0.5.0;
interface IDEGENSwapPair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function baseToken() external view returns (address);
    function getTotalFee() external view returns (uint);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function updateTotalFee(uint totalFee) external returns (bool);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast, address _baseToken);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, uint amount0Fee, uint amount1Fee, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
    function setBaseToken(address _baseToken) external;
}

pragma solidity >=0.6.2;
interface IDEGENSwapRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

pragma solidity >=0.6.2;
interface IDEGENSwapRouter is IDEGENSwapRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function pairFeeAddress(address pair) external view returns (address);
    function adminFee() external view returns (uint256);
    function feeAddressGet() external view returns (address);
}

contract TheRareAntiquitiesTokenLtd is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
   
    address public WETH;

    mapping (address => bool) private _isExcludedFromFee;

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
    
    mapping (address => bool) private botWallets;
    bool botscantrade = false;
    
    bool public canTrade = false;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 500000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    address public marketingWallet;    // marketing wallet address
    address public antiquitiesWallet;  // antiquities Wallet address

    string private _name = "The Rare Antiquities Token Ltd";
    string private _symbol = "RAT";
    uint8 private _decimals = 9;
     
    uint256 private _taxFee = 100;    // reflection tax in BPS
    uint256 private _previousTaxFee = _taxFee;
    
    uint256 private _liquidityFee;    // this variable is unused, ignore this, do NOT change!
    uint256 private _previousLiquidityFee = _liquidityFee;
    
    uint256 private _marketingFee = 200;    // marketing tax in BPS | 200 = 2%
    uint256 private _antiquitiesFee = 300;  // antiquities tax in BPS

    uint256 public _totalTax = _taxFee  + _marketingFee + _antiquitiesFee;
    
    IDEGENSwapRouter public degenSwapRouter;
    address public degenSwapPair;
    address public depwallet;
    
    uint256 public _maxTxAmount = 500000000000 * 10**9; // total supply by default, can be changed at will
    uint256 public _maxWallet = 5000000000 * 10**9;     // 1% max wallet by default, can be changed at will

    modifier onlyExchange() {
        bool isPair = false;
        if(msg.sender == degenSwapPair) isPair = true;
        
        require(
            msg.sender == address(degenSwapRouter)
            || isPair
            , "DEGEN: NOT_ALLOWED"
        );
        _;
    }

    constructor (address _marketingWallet, address _antiquitiesWallet) {
        _rOwned[_msgSender()] = _rTotal;

        marketingWallet = _marketingWallet;
        antiquitiesWallet = _antiquitiesWallet;

        degenSwapRouter = IDEGENSwapRouter(0x4bf3E2287D4CeD7796bFaB364C0401DFcE4a4f7F); //DegenSwap Router 0x4bf3E2287D4CeD7796bFaB364C0401DFcE4a4f7F
        WETH = degenSwapRouter.WETH();

        // Create a uniswap pair for this new token
        degenSwapPair = IDEGENSwapFactory(degenSwapRouter.factory())
        .createPair(address(this), WETH);

        // Set base token in the pair as WETH, which acts as the tax token
        IDEGENSwapPair(degenSwapPair).setBaseToken(WETH);
        IDEGENSwapPair(degenSwapPair).updateTotalFee(_marketingFee + _antiquitiesFee);

        _approve(_msgSender(), address(degenSwapRouter), _tTotal);

        depwallet = 0xa27445dD0Fbe56B95C2401076f03d26C8E61F312;
        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[depwallet] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromReward(address account) public onlyOwner() {
        // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }
        function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _updatePairsFee(uint256 fee) internal {
        IDEGENSwapPair(degenSwapPair).updateTotalFee(fee);
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setMarketingWallet(address walletAddress) public onlyOwner {
        marketingWallet = walletAddress;
    }

    function setAntiquitiesWallet(address walletAddress) public onlyOwner {
        antiquitiesWallet = walletAddress;
    }

    function _setmaxwalletamount(uint256 amount) external onlyOwner() {
        require(amount >= 2500000000, "ERR: max wallet amount should exceed 0.5% of the supply");
        _maxWallet = amount * 10**9;
    }

    function setmaxTxAmount(uint256 amount) external onlyOwner() {
        require(amount >= 2500000000, "ERR: max tx amount should exceed 0.5% of the supply");
        _maxTxAmount = amount * 10**9;
    }
    
    function  clearStuckBalance() public {
        payable(marketingWallet).transfer(address(this).balance);
    }
    
    function claimERCtoknes(IERC20 tokenAddress) external {
        tokenAddress.transfer(marketingWallet, tokenAddress.balanceOf(address(this)));
    }
    
    function addBotWallet(address botwallet) external onlyOwner() {
        require(botwallet != degenSwapPair,"Cannot add pair as a bot");
        require(botwallet != address(this),"Cannot add CA as a bot");
        botWallets[botwallet] = true;
    }
    
    function removeBotWallet(address botwallet) external onlyOwner() {
        botWallets[botwallet] = false;
    }
    
    function getBotWalletStatus(address botwallet) public view returns (bool) {
        return botWallets[botwallet];
    }
    
    function EnableTrading()external onlyOwner() {
        canTrade = true;
    }   

    function setFees(uint256 _reflectionTaxBPS, uint256 _marketingTaxBPS, uint256 _antiquitiesTaxBPS) public onlyOwner {   
       
        _taxFee = _reflectionTaxBPS;
        _marketingFee = _marketingTaxBPS;
        _antiquitiesFee = _antiquitiesTaxBPS;

        _totalTax = _taxFee  + _marketingFee + _antiquitiesFee;
        require(_totalTax <= 1500, "total tax cannot exceed 15%");
        require((_marketingFee + _antiquitiesFee) >= 100, "ERR: marketing + antiquities tax must be over 1%");

        _updatePairsFee(_marketingFee + _antiquitiesFee);
    } 

    function setBaseToken() public onlyOwner { 
        IDEGENSwapPair(degenSwapPair).setBaseToken(WETH);
    } 
    
     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }
    
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(
            10**4
        );
    }

    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(
            10**4
        );
    }
    
    function removeAllFee() private {
        if(_taxFee == 0 && _liquidityFee == 0) return;
        
        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;
        
        _taxFee = 0;
        _liquidityFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
    }
    
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(from != owner() && to != owner())
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        
        if(from == degenSwapPair && to != depwallet) {
            require(balanceOf(to) + amount <= _maxWallet, "check max wallet");
        }

        //indicates if fee should be deducted from transfer
        bool takeFee = true;
        
        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }
        
        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from,to,amount,takeFee);
    }


    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        if(!canTrade){
            require(sender == owner()); // only owner allowed to trade or add liquidity
        }
        
        if(botWallets[sender] || botWallets[recipient]){
            require(botscantrade, "bots arent allowed to trade");
        }
        
        if(!takeFee)
            removeAllFee();
        
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
   
    function depositLPFee(uint256 amount, address token) public onlyExchange {

        uint256 allowanceT = IERC20(token).allowance(msg.sender, address(this));

        if(allowanceT >= amount) {
            IERC20(token).transferFrom(msg.sender, address(this), amount); // _marketingFee + _antiquitiesFee antiquitiesWallet
            // calculate individual tax amount
            uint256 marketingAmount = (amount * _marketingFee) / (_marketingFee + _antiquitiesFee);
            uint256 antiquitiesAmount = amount - marketingAmount;
            // send WETH to respective wallet
            IERC20(token).transfer(marketingWallet, marketingAmount); 
            IERC20(token).transfer(antiquitiesWallet, antiquitiesAmount); 
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_antiquitiesWallet","type":"address"}],"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"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_setmaxwalletamount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_totalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"botwallet","type":"address"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiquitiesWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenAddress","type":"address"}],"name":"claimERCtoknes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"degenSwapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"degenSwapRouter","outputs":[{"internalType":"contract IDEGENSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"depositLPFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depwallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"botwallet","type":"address"}],"name":"getBotWalletStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"botwallet","type":"address"}],"name":"removeBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletAddress","type":"address"}],"name":"setAntiquitiesWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setBaseToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionTaxBPS","type":"uint256"},{"internalType":"uint256","name":"_marketingTaxBPS","type":"uint256"},{"internalType":"uint256","name":"_antiquitiesTaxBPS","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletAddress","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setmaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009805461ffff19169055681b1ae4d6e2ef500000600a8190556200002c9060001962000773565b6200003a90600019620007ac565b600b5560408051808201909152601e8082527f546865205261726520416e74697175697469657320546f6b656e204c7464000060209092019182526200008391600f91620006cd565b506040805180820190915260038082526214905560ea1b6020909201918252620000b091601091620006cd565b506011805460ff1916600917905560646012819055601381905560145460155560c8601681905561012c601781905591620000ec9190620007c6565b620000f89190620007c6565b601855681b1ae4d6e2ef500000601c55674563918244f40000601d553480156200012157600080fd5b50604051620035d3380380620035d38339810160408190526200014491620007fe565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b543360009081526001602090815260409182902092909255600d80546001600160a01b03199081166001600160a01b0387811691909117909255600e805482169286169290921790915560198054734bf3e2287d4ced7796bfab364c0401dfce4a4f7f92168217905581516315ab88c960e31b81529151909263ad5c46489260048082019391829003018186803b1580156200022257600080fd5b505afa15801562000237573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025d919062000836565b600480546001600160a01b0319166001600160a01b039283161781556019546040805163c45a015560e01b81529051919093169263c45a01559281810192602092909190829003018186803b158015620002b657600080fd5b505afa158015620002cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f1919062000836565b600480546040516364e329cb60e11b815230928101929092526001600160a01b039081166024830152919091169063c9c6539690604401602060405180830381600087803b1580156200034357600080fd5b505af115801562000358573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037e919062000836565b601a80546001600160a01b0319166001600160a01b03928316908117909155600480546040516316bb6c1360e01b8152931690830152906316bb6c1390602401600060405180830381600087803b158015620003d957600080fd5b505af1158015620003ee573d6000803e3d6000fd5b5050601a546017546016546001600160a01b03909216935063d32b960492506200041891620007c6565b6040518263ffffffff1660e01b81526004016200043791815260200190565b602060405180830381600087803b1580156200045257600080fd5b505af115801562000467573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048d91906200085b565b50620004ab33601954600a546001600160a01b0390911690620005a1565b601b80546001600160a01b03191673a27445dd0fbe56b95c2401076f03d26c8e61f312179055600160056000620004ea6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526005909352818320805485166001908117909155601b54909116835291208054909216179055620005493390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040516200059191815260200190565b60405180910390a35050620008bc565b6001600160a01b038316620006095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166200066c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000600565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b828054620006db906200087f565b90600052602060002090601f016020900481019282620006ff57600085556200074a565b82601f106200071a57805160ff19168380011785556200074a565b828001600101855582156200074a579182015b828111156200074a5782518255916020019190600101906200072d565b50620007589291506200075c565b5090565b5b808211156200075857600081556001016200075d565b6000826200079157634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b600082821015620007c157620007c162000796565b500390565b60008219821115620007dc57620007dc62000796565b500190565b80516001600160a01b0381168114620007f957600080fd5b919050565b600080604083850312156200081257600080fd5b6200081d83620007e1565b91506200082d60208401620007e1565b90509250929050565b6000602082840312156200084957600080fd5b6200085482620007e1565b9392505050565b6000602082840312156200086e57600080fd5b815180151581146200085457600080fd5b600181811c908216806200089457607f821691505b60208210811415620008b657634e487b7160e01b600052602260045260246000fd5b50919050565b612d0780620008cc6000396000f3fe60806040526004361061028c5760003560e01c80635342acb41161015a5780638da5cb5b116100c1578063b86f92221161007a578063b86f9222146107d6578063cec10c11146107f6578063dd62ed3e14610816578063e34420b41461085c578063ea2f0b371461087c578063f2fde38b1461089c57600080fd5b80638da5cb5b1461072d57806395d89b411461074b578063a1ca534714610760578063a457c2d714610776578063a9059cbb14610796578063ad5c4648146107b657600080fd5b8063715018a611610113578063715018a61461067357806375f0a874146106885780637d1db4a5146106a857806382247ec0146106be5780638283bbf3146106d457806388f82020146106f457600080fd5b80635342acb4146105815780635d098b38146105ba57806360d48489146105da57806365e47de21461061357806370a082311461063357806370e688d81461065357600080fd5b80632f05205c116101fe5780633bd5d173116101b75780633bd5d173146104cc578063437823ec146104ec57806343dbd5411461050c5780634549b03914610521578063495e180c1461054157806352390c021461056157600080fd5b80632f05205c14610416578063313ce567146104355780633277e33814610457578063364333f4146104775780633685d4191461048c57806339509351146104ac57600080fd5b806318160ddd1161025057806318160ddd1461035457806319fcf73c146103695780631d97b7cd146103a157806323b872dd146103b65780632a360631146103d65780632d838119146103f657600080fd5b80630305caff1461029857806306fdde03146102ba578063095ea7b3146102e55780631080afd51461031557806313114a9d1461033557600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b336600461295c565b6108bc565b005b3480156102c657600080fd5b506102cf610910565b6040516102dc9190612979565b60405180910390f35b3480156102f157600080fd5b506103056103003660046129ce565b6109a2565b60405190151581526020016102dc565b34801561032157600080fd5b506102b861033036600461295c565b6109b9565b34801561034157600080fd5b50600c545b6040519081526020016102dc565b34801561036057600080fd5b50600a54610346565b34801561037557600080fd5b50601a54610389906001600160a01b031681565b6040516001600160a01b0390911681526020016102dc565b3480156103ad57600080fd5b506102b8610a05565b3480156103c257600080fd5b506103056103d13660046129fa565b610a40565b3480156103e257600080fd5b506102b86103f136600461295c565b610aa9565b34801561040257600080fd5b50610346610411366004612a3b565b610ba7565b34801561042257600080fd5b5060095461030590610100900460ff1681565b34801561044157600080fd5b5060115460405160ff90911681526020016102dc565b34801561046357600080fd5b506102b861047236600461295c565b610c2b565b34801561048357600080fd5b506102b8610d34565b34801561049857600080fd5b506102b86104a736600461295c565b610d70565b3480156104b857600080fd5b506103056104c73660046129ce565b610f23565b3480156104d857600080fd5b506102b86104e7366004612a3b565b610f59565b3480156104f857600080fd5b506102b861050736600461295c565b611043565b34801561051857600080fd5b506102b8611091565b34801561052d57600080fd5b5061034661053c366004612a62565b611122565b34801561054d57600080fd5b506102b861055c366004612a3b565b6111af565b34801561056d57600080fd5b506102b861057c36600461295c565b611267565b34801561058d57600080fd5b5061030561059c36600461295c565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105c657600080fd5b506102b86105d536600461295c565b6113ba565b3480156105e657600080fd5b506103056105f536600461295c565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561061f57600080fd5b506102b861062e366004612a3b565b611406565b34801561063f57600080fd5b5061034661064e36600461295c565b6114b4565b34801561065f57600080fd5b50601954610389906001600160a01b031681565b34801561067f57600080fd5b506102b8611513565b34801561069457600080fd5b50600d54610389906001600160a01b031681565b3480156106b457600080fd5b50610346601c5481565b3480156106ca57600080fd5b50610346601d5481565b3480156106e057600080fd5b506102b86106ef366004612a92565b611587565b34801561070057600080fd5b5061030561070f36600461295c565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561073957600080fd5b506000546001600160a01b0316610389565b34801561075757600080fd5b506102cf611857565b34801561076c57600080fd5b5061034660185481565b34801561078257600080fd5b506103056107913660046129ce565b611866565b3480156107a257600080fd5b506103056107b13660046129ce565b6118b5565b3480156107c257600080fd5b50600454610389906001600160a01b031681565b3480156107e257600080fd5b50601b54610389906001600160a01b031681565b34801561080257600080fd5b506102b8610811366004612ab7565b6118c2565b34801561082257600080fd5b50610346610831366004612ae3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561086857600080fd5b50600e54610389906001600160a01b031681565b34801561088857600080fd5b506102b861089736600461295c565b6119fc565b3480156108a857600080fd5b506102b86108b736600461295c565b611a47565b6000546001600160a01b031633146108ef5760405162461bcd60e51b81526004016108e690612b11565b60405180910390fd5b6001600160a01b03166000908152600860205260409020805460ff19169055565b6060600f805461091f90612b46565b80601f016020809104026020016040519081016040528092919081815260200182805461094b90612b46565b80156109985780601f1061096d57610100808354040283529160200191610998565b820191906000526020600020905b81548152906001019060200180831161097b57829003601f168201915b5050505050905090565b60006109af338484611b31565b5060015b92915050565b6000546001600160a01b031633146109e35760405162461bcd60e51b81526004016108e690612b11565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610a2f5760405162461bcd60e51b81526004016108e690612b11565b6009805461ff001916610100179055565b6000610a4d848484611c55565b610a9f8433610a9a85604051806060016040528060288152602001612c85602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611ef0565b611b31565b5060019392505050565b6000546001600160a01b03163314610ad35760405162461bcd60e51b81526004016108e690612b11565b601a546001600160a01b0382811691161415610b315760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74206164642070616972206173206120626f74000000000000000060448201526064016108e6565b6001600160a01b038116301415610b835760405162461bcd60e51b815260206004820152601660248201527510d85b9b9bdd081859190810d048185cc81848189bdd60521b60448201526064016108e6565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000600b54821115610c0e5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108e6565b6000610c18611f2a565b9050610c248382611f4d565b9392505050565b600d546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a082319060240160206040518083038186803b158015610c7957600080fd5b505afa158015610c8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb19190612b81565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015b602060405180830381600087803b158015610cf857600080fd5b505af1158015610d0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d309190612b9a565b5050565b600d546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610d6d573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610d9a5760405162461bcd60e51b81526004016108e690612b11565b6001600160a01b03811660009081526006602052604090205460ff16610e025760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108e6565b60005b600754811015610d3057816001600160a01b031660078281548110610e2c57610e2c612bb7565b6000918252602090912001546001600160a01b03161415610f115760078054610e5790600190612be3565b81548110610e6757610e67612bb7565b600091825260209091200154600780546001600160a01b039092169183908110610e9357610e93612bb7565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600690925220805460ff191690556007805480610eeb57610eeb612bfa565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f1b81612c10565b915050610e05565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916109af918590610a9a9086611f8f565b3360008181526006602052604090205460ff1615610fce5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016108e6565b6000610fd983611fee565b505050506001600160a01b0384166000908152600160205260409020549192506110059190508261203d565b6001600160a01b038316600090815260016020526040902055600b5461102b908261203d565b600b55600c5461103b9084611f8f565b600c55505050565b6000546001600160a01b0316331461106d5760405162461bcd60e51b81526004016108e690612b11565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b031633146110bb5760405162461bcd60e51b81526004016108e690612b11565b601a54600480546040516316bb6c1360e01b81526001600160a01b0391821692810192909252909116906316bb6c1390602401600060405180830381600087803b15801561110857600080fd5b505af115801561111c573d6000803e3d6000fd5b50505050565b6000600a548311156111765760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108e6565b8161119557600061118684611fee565b509395506109b3945050505050565b60006111a084611fee565b509295506109b3945050505050565b6000546001600160a01b031633146111d95760405162461bcd60e51b81526004016108e690612b11565b639502f9008110156112535760405162461bcd60e51b815260206004820152603760248201527f4552523a206d61782077616c6c657420616d6f756e742073686f756c6420657860448201527f6365656420302e3525206f662074686520737570706c7900000000000000000060648201526084016108e6565b61126181633b9aca00612c2b565b601d5550565b6000546001600160a01b031633146112915760405162461bcd60e51b81526004016108e690612b11565b6001600160a01b03811660009081526006602052604090205460ff16156112fa5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108e6565b6001600160a01b03811660009081526001602052604090205415611354576001600160a01b03811660009081526001602052604090205461133a90610ba7565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146113e45760405162461bcd60e51b81526004016108e690612b11565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114305760405162461bcd60e51b81526004016108e690612b11565b639502f9008110156114a05760405162461bcd60e51b815260206004820152603360248201527f4552523a206d617820747820616d6f756e742073686f756c642065786365656460448201527220302e3525206f662074686520737570706c7960681b60648201526084016108e6565b6114ae81633b9aca00612c2b565b601c5550565b6001600160a01b03811660009081526006602052604081205460ff16156114f157506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546109b390610ba7565b6000546001600160a01b0316331461153d5760405162461bcd60e51b81526004016108e690612b11565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b601a546000906001600160a01b03163314156115a1575060015b6019546001600160a01b03163314806115b75750805b6115f85760405162461bcd60e51b8152602060048201526012602482015271111151d1538e881393d517d0531313d5d15160721b60448201526064016108e6565b604051636eb1769f60e11b81523360048201523060248201526000906001600160a01b0384169063dd62ed3e9060440160206040518083038186803b15801561164057600080fd5b505afa158015611654573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116789190612b81565b905083811061111c576040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038416906323b872dd90606401602060405180830381600087803b1580156116cf57600080fd5b505af11580156116e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117079190612b9a565b50600060175460165461171a9190612c4a565b6016546117279087612c2b565b6117319190612c62565b9050600061173f8287612be3565b600d5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291925086169063a9059cbb90604401602060405180830381600087803b15801561178f57600080fd5b505af11580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c79190612b9a565b50600e5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529086169063a9059cbb90604401602060405180830381600087803b15801561181657600080fd5b505af115801561182a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184e9190612b9a565b50505050505050565b60606010805461091f90612b46565b60006109af3384610a9a85604051806060016040528060258152602001612cad602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611ef0565b60006109af338484611c55565b6000546001600160a01b031633146118ec5760405162461bcd60e51b81526004016108e690612b11565b601283905560168290556017819055806119068385612c4a565b6119109190612c4a565b60188190556105dc10156119665760405162461bcd60e51b815260206004820152601b60248201527f746f74616c207461782063616e6e6f742065786365656420313525000000000060448201526064016108e6565b60646017546016546119789190612c4a565b10156119df5760405162461bcd60e51b815260206004820152603060248201527f4552523a206d61726b6574696e67202b20616e7469717569746965732074617860448201526f206d757374206265206f76657220312560801b60648201526084016108e6565b6119f76017546016546119f29190612c4a565b61207f565b505050565b6000546001600160a01b03163314611a265760405162461bcd60e51b81526004016108e690612b11565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b03163314611a715760405162461bcd60e51b81526004016108e690612b11565b6001600160a01b038116611ad65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108e6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611b935760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108e6565b6001600160a01b038216611bf45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108e6565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611cb95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108e6565b6001600160a01b038216611d1b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108e6565b60008111611d7d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108e6565b6000546001600160a01b03848116911614801590611da957506000546001600160a01b03838116911614155b15611e1157601c54811115611e115760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016108e6565b601a546001600160a01b038481169116148015611e3c5750601b546001600160a01b03838116911614155b15611e9957601d5481611e4e846114b4565b611e589190612c4a565b1115611e995760405162461bcd60e51b815260206004820152601060248201526f18da1958dac81b585e081dd85b1b195d60821b60448201526064016108e6565b6001600160a01b03831660009081526005602052604090205460019060ff1680611edb57506001600160a01b03831660009081526005602052604090205460ff165b15611ee4575060005b61111c848484846120b0565b60008184841115611f145760405162461bcd60e51b81526004016108e69190612979565b506000611f218486612be3565b95945050505050565b6000806000611f376122e6565b9092509050611f468282611f4d565b9250505090565b6000610c2483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612468565b600080611f9c8385612c4a565b905083811015610c245760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108e6565b60008060008060008060008060006120058a612496565b92509250925060008060006120238d868661201e611f2a565b6124d8565b919f909e50909c50959a5093985091965092945050505050565b6000610c2483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ef0565b601a546040516334cae58160e21b8152600481018390526001600160a01b039091169063d32b960490602401610cde565b600954610100900460ff166120d9576000546001600160a01b038581169116146120d957600080fd5b6001600160a01b03841660009081526008602052604090205460ff168061211857506001600160a01b03831660009081526008602052604090205460ff165b1561216f5760095460ff1661216f5760405162461bcd60e51b815260206004820152601b60248201527f626f7473206172656e7420616c6c6f77656420746f207472616465000000000060448201526064016108e6565b8061217c5761217c612528565b6001600160a01b03841660009081526006602052604090205460ff1680156121bd57506001600160a01b03831660009081526006602052604090205460ff16155b156121d2576121cd848484612556565b6122d0565b6001600160a01b03841660009081526006602052604090205460ff1615801561221357506001600160a01b03831660009081526006602052604090205460ff165b15612223576121cd84848461267c565b6001600160a01b03841660009081526006602052604090205460ff1615801561226557506001600160a01b03831660009081526006602052604090205460ff16155b15612275576121cd848484612725565b6001600160a01b03841660009081526006602052604090205460ff1680156122b557506001600160a01b03831660009081526006602052604090205460ff165b156122c5576121cd848484612769565b6122d0848484612725565b8061111c5761111c601354601255601554601455565b600b54600a546000918291825b6007548110156124385782600160006007848154811061231557612315612bb7565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612380575081600260006007848154811061235957612359612bb7565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561239657600b54600a54945094505050509091565b6123dc60016000600784815481106123b0576123b0612bb7565b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061203d565b925061242460026000600784815481106123f8576123f8612bb7565b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061203d565b91508061243081612c10565b9150506122f3565b50600a54600b5461244891611f4d565b82101561245f57600b54600a549350935050509091565b90939092509050565b600081836124895760405162461bcd60e51b81526004016108e69190612979565b506000611f218486612c62565b6000806000806124a5856127dc565b905060006124b2866127ff565b905060006124ca826124c4898661203d565b9061203d565b979296509094509092505050565b60008080806124e7888661281c565b905060006124f5888761281c565b90506000612503888861281c565b90506000612515826124c4868661203d565b939b939a50919850919650505050505050565b6012541580156125385750601454155b1561253f57565b601280546013556014805460155560009182905555565b60008060008060008061256887611fee565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061259a908861203d565b6001600160a01b038a166000908152600260209081526040808320939093556001905220546125c9908761203d565b6001600160a01b03808b1660009081526001602052604080822093909355908a16815220546125f89086611f8f565b6001600160a01b03891660009081526001602052604090205561261a8161289b565b6126248483612923565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161266991815260200190565b60405180910390a3505050505050505050565b60008060008060008061268e87611fee565b6001600160a01b038f16600090815260016020526040902054959b509399509197509550935091506126c0908761203d565b6001600160a01b03808b16600090815260016020908152604080832094909455918b168152600290915220546126f69084611f8f565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546125f89086611f8f565b60008060008060008061273787611fee565b6001600160a01b038f16600090815260016020526040902054959b509399509197509550935091506125c9908761203d565b60008060008060008061277b87611fee565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506127ad908861203d565b6001600160a01b038a166000908152600260209081526040808320939093556001905220546126c0908761203d565b60006109b36127106127f96012548561281c90919063ffffffff16565b90611f4d565b60006109b36127106127f96014548561281c90919063ffffffff16565b60008261282b575060006109b3565b60006128378385612c2b565b9050826128448583612c62565b14610c245760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108e6565b60006128a5611f2a565b905060006128b3838361281c565b306000908152600160205260409020549091506128d09082611f8f565b3060009081526001602090815260408083209390935560069052205460ff16156119f7573060009081526002602052604090205461290e9084611f8f565b30600090815260026020526040902055505050565b600b54612930908361203d565b600b55600c546129409082611f8f565b600c555050565b6001600160a01b0381168114610d6d57600080fd5b60006020828403121561296e57600080fd5b8135610c2481612947565b600060208083528351808285015260005b818110156129a65785810183015185820160400152820161298a565b818111156129b8576000604083870101525b50601f01601f1916929092016040019392505050565b600080604083850312156129e157600080fd5b82356129ec81612947565b946020939093013593505050565b600080600060608486031215612a0f57600080fd5b8335612a1a81612947565b92506020840135612a2a81612947565b929592945050506040919091013590565b600060208284031215612a4d57600080fd5b5035919050565b8015158114610d6d57600080fd5b60008060408385031215612a7557600080fd5b823591506020830135612a8781612a54565b809150509250929050565b60008060408385031215612aa557600080fd5b823591506020830135612a8781612947565b600080600060608486031215612acc57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612af657600080fd5b8235612b0181612947565b91506020830135612a8781612947565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680612b5a57607f821691505b60208210811415612b7b57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612b9357600080fd5b5051919050565b600060208284031215612bac57600080fd5b8151610c2481612a54565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015612bf557612bf5612bcd565b500390565b634e487b7160e01b600052603160045260246000fd5b6000600019821415612c2457612c24612bcd565b5060010190565b6000816000190483118215151615612c4557612c45612bcd565b500290565b60008219821115612c5d57612c5d612bcd565b500190565b600082612c7f57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a809c151a99a633fde9e3495b398fa4f5e8cb1c3b16c6a2e41fcd320cea7b16564736f6c63430008090033000000000000000000000000cb6b4ff584b1a8859fae51029ba3dce651f5836c000000000000000000000000338037becf48e54b7d86c6a8db38b118bfcd7690

Deployed Bytecode

0x60806040526004361061028c5760003560e01c80635342acb41161015a5780638da5cb5b116100c1578063b86f92221161007a578063b86f9222146107d6578063cec10c11146107f6578063dd62ed3e14610816578063e34420b41461085c578063ea2f0b371461087c578063f2fde38b1461089c57600080fd5b80638da5cb5b1461072d57806395d89b411461074b578063a1ca534714610760578063a457c2d714610776578063a9059cbb14610796578063ad5c4648146107b657600080fd5b8063715018a611610113578063715018a61461067357806375f0a874146106885780637d1db4a5146106a857806382247ec0146106be5780638283bbf3146106d457806388f82020146106f457600080fd5b80635342acb4146105815780635d098b38146105ba57806360d48489146105da57806365e47de21461061357806370a082311461063357806370e688d81461065357600080fd5b80632f05205c116101fe5780633bd5d173116101b75780633bd5d173146104cc578063437823ec146104ec57806343dbd5411461050c5780634549b03914610521578063495e180c1461054157806352390c021461056157600080fd5b80632f05205c14610416578063313ce567146104355780633277e33814610457578063364333f4146104775780633685d4191461048c57806339509351146104ac57600080fd5b806318160ddd1161025057806318160ddd1461035457806319fcf73c146103695780631d97b7cd146103a157806323b872dd146103b65780632a360631146103d65780632d838119146103f657600080fd5b80630305caff1461029857806306fdde03146102ba578063095ea7b3146102e55780631080afd51461031557806313114a9d1461033557600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b336600461295c565b6108bc565b005b3480156102c657600080fd5b506102cf610910565b6040516102dc9190612979565b60405180910390f35b3480156102f157600080fd5b506103056103003660046129ce565b6109a2565b60405190151581526020016102dc565b34801561032157600080fd5b506102b861033036600461295c565b6109b9565b34801561034157600080fd5b50600c545b6040519081526020016102dc565b34801561036057600080fd5b50600a54610346565b34801561037557600080fd5b50601a54610389906001600160a01b031681565b6040516001600160a01b0390911681526020016102dc565b3480156103ad57600080fd5b506102b8610a05565b3480156103c257600080fd5b506103056103d13660046129fa565b610a40565b3480156103e257600080fd5b506102b86103f136600461295c565b610aa9565b34801561040257600080fd5b50610346610411366004612a3b565b610ba7565b34801561042257600080fd5b5060095461030590610100900460ff1681565b34801561044157600080fd5b5060115460405160ff90911681526020016102dc565b34801561046357600080fd5b506102b861047236600461295c565b610c2b565b34801561048357600080fd5b506102b8610d34565b34801561049857600080fd5b506102b86104a736600461295c565b610d70565b3480156104b857600080fd5b506103056104c73660046129ce565b610f23565b3480156104d857600080fd5b506102b86104e7366004612a3b565b610f59565b3480156104f857600080fd5b506102b861050736600461295c565b611043565b34801561051857600080fd5b506102b8611091565b34801561052d57600080fd5b5061034661053c366004612a62565b611122565b34801561054d57600080fd5b506102b861055c366004612a3b565b6111af565b34801561056d57600080fd5b506102b861057c36600461295c565b611267565b34801561058d57600080fd5b5061030561059c36600461295c565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105c657600080fd5b506102b86105d536600461295c565b6113ba565b3480156105e657600080fd5b506103056105f536600461295c565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561061f57600080fd5b506102b861062e366004612a3b565b611406565b34801561063f57600080fd5b5061034661064e36600461295c565b6114b4565b34801561065f57600080fd5b50601954610389906001600160a01b031681565b34801561067f57600080fd5b506102b8611513565b34801561069457600080fd5b50600d54610389906001600160a01b031681565b3480156106b457600080fd5b50610346601c5481565b3480156106ca57600080fd5b50610346601d5481565b3480156106e057600080fd5b506102b86106ef366004612a92565b611587565b34801561070057600080fd5b5061030561070f36600461295c565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561073957600080fd5b506000546001600160a01b0316610389565b34801561075757600080fd5b506102cf611857565b34801561076c57600080fd5b5061034660185481565b34801561078257600080fd5b506103056107913660046129ce565b611866565b3480156107a257600080fd5b506103056107b13660046129ce565b6118b5565b3480156107c257600080fd5b50600454610389906001600160a01b031681565b3480156107e257600080fd5b50601b54610389906001600160a01b031681565b34801561080257600080fd5b506102b8610811366004612ab7565b6118c2565b34801561082257600080fd5b50610346610831366004612ae3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561086857600080fd5b50600e54610389906001600160a01b031681565b34801561088857600080fd5b506102b861089736600461295c565b6119fc565b3480156108a857600080fd5b506102b86108b736600461295c565b611a47565b6000546001600160a01b031633146108ef5760405162461bcd60e51b81526004016108e690612b11565b60405180910390fd5b6001600160a01b03166000908152600860205260409020805460ff19169055565b6060600f805461091f90612b46565b80601f016020809104026020016040519081016040528092919081815260200182805461094b90612b46565b80156109985780601f1061096d57610100808354040283529160200191610998565b820191906000526020600020905b81548152906001019060200180831161097b57829003601f168201915b5050505050905090565b60006109af338484611b31565b5060015b92915050565b6000546001600160a01b031633146109e35760405162461bcd60e51b81526004016108e690612b11565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610a2f5760405162461bcd60e51b81526004016108e690612b11565b6009805461ff001916610100179055565b6000610a4d848484611c55565b610a9f8433610a9a85604051806060016040528060288152602001612c85602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611ef0565b611b31565b5060019392505050565b6000546001600160a01b03163314610ad35760405162461bcd60e51b81526004016108e690612b11565b601a546001600160a01b0382811691161415610b315760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74206164642070616972206173206120626f74000000000000000060448201526064016108e6565b6001600160a01b038116301415610b835760405162461bcd60e51b815260206004820152601660248201527510d85b9b9bdd081859190810d048185cc81848189bdd60521b60448201526064016108e6565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000600b54821115610c0e5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108e6565b6000610c18611f2a565b9050610c248382611f4d565b9392505050565b600d546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a082319060240160206040518083038186803b158015610c7957600080fd5b505afa158015610c8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb19190612b81565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015b602060405180830381600087803b158015610cf857600080fd5b505af1158015610d0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d309190612b9a565b5050565b600d546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610d6d573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610d9a5760405162461bcd60e51b81526004016108e690612b11565b6001600160a01b03811660009081526006602052604090205460ff16610e025760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108e6565b60005b600754811015610d3057816001600160a01b031660078281548110610e2c57610e2c612bb7565b6000918252602090912001546001600160a01b03161415610f115760078054610e5790600190612be3565b81548110610e6757610e67612bb7565b600091825260209091200154600780546001600160a01b039092169183908110610e9357610e93612bb7565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600690925220805460ff191690556007805480610eeb57610eeb612bfa565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f1b81612c10565b915050610e05565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916109af918590610a9a9086611f8f565b3360008181526006602052604090205460ff1615610fce5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016108e6565b6000610fd983611fee565b505050506001600160a01b0384166000908152600160205260409020549192506110059190508261203d565b6001600160a01b038316600090815260016020526040902055600b5461102b908261203d565b600b55600c5461103b9084611f8f565b600c55505050565b6000546001600160a01b0316331461106d5760405162461bcd60e51b81526004016108e690612b11565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b031633146110bb5760405162461bcd60e51b81526004016108e690612b11565b601a54600480546040516316bb6c1360e01b81526001600160a01b0391821692810192909252909116906316bb6c1390602401600060405180830381600087803b15801561110857600080fd5b505af115801561111c573d6000803e3d6000fd5b50505050565b6000600a548311156111765760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108e6565b8161119557600061118684611fee565b509395506109b3945050505050565b60006111a084611fee565b509295506109b3945050505050565b6000546001600160a01b031633146111d95760405162461bcd60e51b81526004016108e690612b11565b639502f9008110156112535760405162461bcd60e51b815260206004820152603760248201527f4552523a206d61782077616c6c657420616d6f756e742073686f756c6420657860448201527f6365656420302e3525206f662074686520737570706c7900000000000000000060648201526084016108e6565b61126181633b9aca00612c2b565b601d5550565b6000546001600160a01b031633146112915760405162461bcd60e51b81526004016108e690612b11565b6001600160a01b03811660009081526006602052604090205460ff16156112fa5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108e6565b6001600160a01b03811660009081526001602052604090205415611354576001600160a01b03811660009081526001602052604090205461133a90610ba7565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146113e45760405162461bcd60e51b81526004016108e690612b11565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114305760405162461bcd60e51b81526004016108e690612b11565b639502f9008110156114a05760405162461bcd60e51b815260206004820152603360248201527f4552523a206d617820747820616d6f756e742073686f756c642065786365656460448201527220302e3525206f662074686520737570706c7960681b60648201526084016108e6565b6114ae81633b9aca00612c2b565b601c5550565b6001600160a01b03811660009081526006602052604081205460ff16156114f157506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546109b390610ba7565b6000546001600160a01b0316331461153d5760405162461bcd60e51b81526004016108e690612b11565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b601a546000906001600160a01b03163314156115a1575060015b6019546001600160a01b03163314806115b75750805b6115f85760405162461bcd60e51b8152602060048201526012602482015271111151d1538e881393d517d0531313d5d15160721b60448201526064016108e6565b604051636eb1769f60e11b81523360048201523060248201526000906001600160a01b0384169063dd62ed3e9060440160206040518083038186803b15801561164057600080fd5b505afa158015611654573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116789190612b81565b905083811061111c576040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038416906323b872dd90606401602060405180830381600087803b1580156116cf57600080fd5b505af11580156116e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117079190612b9a565b50600060175460165461171a9190612c4a565b6016546117279087612c2b565b6117319190612c62565b9050600061173f8287612be3565b600d5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291925086169063a9059cbb90604401602060405180830381600087803b15801561178f57600080fd5b505af11580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c79190612b9a565b50600e5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529086169063a9059cbb90604401602060405180830381600087803b15801561181657600080fd5b505af115801561182a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184e9190612b9a565b50505050505050565b60606010805461091f90612b46565b60006109af3384610a9a85604051806060016040528060258152602001612cad602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611ef0565b60006109af338484611c55565b6000546001600160a01b031633146118ec5760405162461bcd60e51b81526004016108e690612b11565b601283905560168290556017819055806119068385612c4a565b6119109190612c4a565b60188190556105dc10156119665760405162461bcd60e51b815260206004820152601b60248201527f746f74616c207461782063616e6e6f742065786365656420313525000000000060448201526064016108e6565b60646017546016546119789190612c4a565b10156119df5760405162461bcd60e51b815260206004820152603060248201527f4552523a206d61726b6574696e67202b20616e7469717569746965732074617860448201526f206d757374206265206f76657220312560801b60648201526084016108e6565b6119f76017546016546119f29190612c4a565b61207f565b505050565b6000546001600160a01b03163314611a265760405162461bcd60e51b81526004016108e690612b11565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b03163314611a715760405162461bcd60e51b81526004016108e690612b11565b6001600160a01b038116611ad65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108e6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611b935760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108e6565b6001600160a01b038216611bf45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108e6565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611cb95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108e6565b6001600160a01b038216611d1b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108e6565b60008111611d7d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108e6565b6000546001600160a01b03848116911614801590611da957506000546001600160a01b03838116911614155b15611e1157601c54811115611e115760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016108e6565b601a546001600160a01b038481169116148015611e3c5750601b546001600160a01b03838116911614155b15611e9957601d5481611e4e846114b4565b611e589190612c4a565b1115611e995760405162461bcd60e51b815260206004820152601060248201526f18da1958dac81b585e081dd85b1b195d60821b60448201526064016108e6565b6001600160a01b03831660009081526005602052604090205460019060ff1680611edb57506001600160a01b03831660009081526005602052604090205460ff165b15611ee4575060005b61111c848484846120b0565b60008184841115611f145760405162461bcd60e51b81526004016108e69190612979565b506000611f218486612be3565b95945050505050565b6000806000611f376122e6565b9092509050611f468282611f4d565b9250505090565b6000610c2483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612468565b600080611f9c8385612c4a565b905083811015610c245760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108e6565b60008060008060008060008060006120058a612496565b92509250925060008060006120238d868661201e611f2a565b6124d8565b919f909e50909c50959a5093985091965092945050505050565b6000610c2483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ef0565b601a546040516334cae58160e21b8152600481018390526001600160a01b039091169063d32b960490602401610cde565b600954610100900460ff166120d9576000546001600160a01b038581169116146120d957600080fd5b6001600160a01b03841660009081526008602052604090205460ff168061211857506001600160a01b03831660009081526008602052604090205460ff165b1561216f5760095460ff1661216f5760405162461bcd60e51b815260206004820152601b60248201527f626f7473206172656e7420616c6c6f77656420746f207472616465000000000060448201526064016108e6565b8061217c5761217c612528565b6001600160a01b03841660009081526006602052604090205460ff1680156121bd57506001600160a01b03831660009081526006602052604090205460ff16155b156121d2576121cd848484612556565b6122d0565b6001600160a01b03841660009081526006602052604090205460ff1615801561221357506001600160a01b03831660009081526006602052604090205460ff165b15612223576121cd84848461267c565b6001600160a01b03841660009081526006602052604090205460ff1615801561226557506001600160a01b03831660009081526006602052604090205460ff16155b15612275576121cd848484612725565b6001600160a01b03841660009081526006602052604090205460ff1680156122b557506001600160a01b03831660009081526006602052604090205460ff165b156122c5576121cd848484612769565b6122d0848484612725565b8061111c5761111c601354601255601554601455565b600b54600a546000918291825b6007548110156124385782600160006007848154811061231557612315612bb7565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612380575081600260006007848154811061235957612359612bb7565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561239657600b54600a54945094505050509091565b6123dc60016000600784815481106123b0576123b0612bb7565b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061203d565b925061242460026000600784815481106123f8576123f8612bb7565b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061203d565b91508061243081612c10565b9150506122f3565b50600a54600b5461244891611f4d565b82101561245f57600b54600a549350935050509091565b90939092509050565b600081836124895760405162461bcd60e51b81526004016108e69190612979565b506000611f218486612c62565b6000806000806124a5856127dc565b905060006124b2866127ff565b905060006124ca826124c4898661203d565b9061203d565b979296509094509092505050565b60008080806124e7888661281c565b905060006124f5888761281c565b90506000612503888861281c565b90506000612515826124c4868661203d565b939b939a50919850919650505050505050565b6012541580156125385750601454155b1561253f57565b601280546013556014805460155560009182905555565b60008060008060008061256887611fee565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061259a908861203d565b6001600160a01b038a166000908152600260209081526040808320939093556001905220546125c9908761203d565b6001600160a01b03808b1660009081526001602052604080822093909355908a16815220546125f89086611f8f565b6001600160a01b03891660009081526001602052604090205561261a8161289b565b6126248483612923565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161266991815260200190565b60405180910390a3505050505050505050565b60008060008060008061268e87611fee565b6001600160a01b038f16600090815260016020526040902054959b509399509197509550935091506126c0908761203d565b6001600160a01b03808b16600090815260016020908152604080832094909455918b168152600290915220546126f69084611f8f565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546125f89086611f8f565b60008060008060008061273787611fee565b6001600160a01b038f16600090815260016020526040902054959b509399509197509550935091506125c9908761203d565b60008060008060008061277b87611fee565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506127ad908861203d565b6001600160a01b038a166000908152600260209081526040808320939093556001905220546126c0908761203d565b60006109b36127106127f96012548561281c90919063ffffffff16565b90611f4d565b60006109b36127106127f96014548561281c90919063ffffffff16565b60008261282b575060006109b3565b60006128378385612c2b565b9050826128448583612c62565b14610c245760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108e6565b60006128a5611f2a565b905060006128b3838361281c565b306000908152600160205260409020549091506128d09082611f8f565b3060009081526001602090815260408083209390935560069052205460ff16156119f7573060009081526002602052604090205461290e9084611f8f565b30600090815260026020526040902055505050565b600b54612930908361203d565b600b55600c546129409082611f8f565b600c555050565b6001600160a01b0381168114610d6d57600080fd5b60006020828403121561296e57600080fd5b8135610c2481612947565b600060208083528351808285015260005b818110156129a65785810183015185820160400152820161298a565b818111156129b8576000604083870101525b50601f01601f1916929092016040019392505050565b600080604083850312156129e157600080fd5b82356129ec81612947565b946020939093013593505050565b600080600060608486031215612a0f57600080fd5b8335612a1a81612947565b92506020840135612a2a81612947565b929592945050506040919091013590565b600060208284031215612a4d57600080fd5b5035919050565b8015158114610d6d57600080fd5b60008060408385031215612a7557600080fd5b823591506020830135612a8781612a54565b809150509250929050565b60008060408385031215612aa557600080fd5b823591506020830135612a8781612947565b600080600060608486031215612acc57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612af657600080fd5b8235612b0181612947565b91506020830135612a8781612947565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680612b5a57607f821691505b60208210811415612b7b57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612b9357600080fd5b5051919050565b600060208284031215612bac57600080fd5b8151610c2481612a54565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015612bf557612bf5612bcd565b500390565b634e487b7160e01b600052603160045260246000fd5b6000600019821415612c2457612c24612bcd565b5060010190565b6000816000190483118215151615612c4557612c45612bcd565b500290565b60008219821115612c5d57612c5d612bcd565b500190565b600082612c7f57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a809c151a99a633fde9e3495b398fa4f5e8cb1c3b16c6a2e41fcd320cea7b16564736f6c63430008090033

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

000000000000000000000000cb6b4ff584b1a8859fae51029ba3dce651f5836c000000000000000000000000338037becf48e54b7d86c6a8db38b118bfcd7690

-----Decoded View---------------
Arg [0] : _marketingWallet (address): 0xCB6b4fF584B1a8859fAe51029Ba3DcE651f5836c
Arg [1] : _antiquitiesWallet (address): 0x338037Becf48e54b7D86c6A8db38B118bFCD7690

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000cb6b4ff584b1a8859fae51029ba3dce651f5836c
Arg [1] : 000000000000000000000000338037becf48e54b7d86c6a8db38b118bfcd7690


Deployed Bytecode Sourcemap

24099:19393:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33971:113;;;;;;;;;;-1:-1:-1;33971:113:0;;;;;:::i;:::-;;:::i;:::-;;27549:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28461:161;;;;;;;;;;-1:-1:-1;28461:161:0;;;;;:::i;:::-;;:::i;:::-;;;1489:14:1;;1482:22;1464:41;;1452:2;1437:18;28461:161:0;1324:187:1;32855:122:0;;;;;;;;;;-1:-1:-1;32855:122:0;;;;;:::i;:::-;;:::i;29582:87::-;;;;;;;;;;-1:-1:-1;29651:10:0;;29582:87;;;1662:25:1;;;1650:2;1635:18;29582:87:0;1516:177:1;27826:95:0;;;;;;;;;;-1:-1:-1;27906:7:0;;27826:95;;25761:28;;;;;;;;;;-1:-1:-1;25761:28:0;;;;-1:-1:-1;;;;;25761:28:0;;;;;;-1:-1:-1;;;;;1862:32:1;;;1844:51;;1832:2;1817:18;25761:28:0;1698:203:1;34229:79:0;;;;;;;;;;;;;:::i;28630:313::-;;;;;;;;;;-1:-1:-1;28630:313:0;;;;;:::i;:::-;;:::i;33706:253::-;;;;;;;;;;-1:-1:-1;33706:253:0;;;;;:::i;:::-;;:::i;30506:::-;;;;;;;;;;-1:-1:-1;30506:253:0;;;;;:::i;:::-;;:::i;24690:28::-;;;;;;;;;;-1:-1:-1;24690:28:0;;;;;;;;;;;27735:83;;;;;;;;;;-1:-1:-1;27801:9:0;;27735:83;;27801:9;;;;2694:36:1;;2682:2;2667:18;27735:83:0;2552:184:1;33544:150:0;;;;;;;;;;-1:-1:-1;33544:150:0;;;;;:::i;:::-;;:::i;33420:112::-;;;;;;;;;;;;;:::i;31222:479::-;;;;;;;;;;-1:-1:-1;31222:479:0;;;;;:::i;:::-;;:::i;28951:218::-;;;;;;;;;;-1:-1:-1;28951:218:0;;;;;:::i;:::-;;:::i;29677:377::-;;;;;;;;;;-1:-1:-1;29677:377:0;;;;;:::i;:::-;;:::i;32488:111::-;;;;;;;;;;-1:-1:-1;32488:111:0;;;;;:::i;:::-;;:::i;34899:109::-;;;;;;;;;;;;;:::i;30062:436::-;;;;;;;;;;-1:-1:-1;30062:436:0;;;;;:::i;:::-;;:::i;32985:211::-;;;;;;;;;;-1:-1:-1;32985:211:0;;;;;:::i;:::-;;:::i;30767:447::-;;;;;;;;;;-1:-1:-1;30767:447:0;;;;;:::i;:::-;;:::i;38322:123::-;;;;;;;;;;-1:-1:-1;38322:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;38410:27:0;38386:4;38410:27;;;:18;:27;;;;;;;;;38322:123;32729:118;;;;;;;;;;-1:-1:-1;32729:118:0;;;;;:::i;:::-;;:::i;34096:121::-;;;;;;;;;;-1:-1:-1;34096:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;34188:21:0;34164:4;34188:21;;;:10;:21;;;;;;;;;34096:121;33204:204;;;;;;;;;;-1:-1:-1;33204:204:0;;;;;:::i;:::-;;:::i;27929:198::-;;;;;;;;;;-1:-1:-1;27929:198:0;;;;;:::i;:::-;;:::i;25715:39::-;;;;;;;;;;-1:-1:-1;25715:39:0;;;;-1:-1:-1;;;;;25715:39:0;;;14803:148;;;;;;;;;;;;;:::i;24921:30::-;;;;;;;;;;-1:-1:-1;24921:30:0;;;;-1:-1:-1;;;;;24921:30:0;;;25833:50;;;;;;;;;;;;;;;;25941:46;;;;;;;;;;;;;;;;42735:754;;;;;;;;;;-1:-1:-1;42735:754:0;;;;;:::i;:::-;;:::i;29454:120::-;;;;;;;;;;-1:-1:-1;29454:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;29546:20:0;29522:4;29546:20;;;:11;:20;;;;;;;;;29454:120;14160:79;;;;;;;;;;-1:-1:-1;14198:7:0;14225:6;-1:-1:-1;;;;;14225:6:0;14160:79;;27640:87;;;;;;;;;;;;;:::i;25633:69::-;;;;;;;;;;;;;;;;29177:269;;;;;;;;;;-1:-1:-1;29177:269:0;;;;;:::i;:::-;;:::i;28135:167::-;;;;;;;;;;-1:-1:-1;28135:167:0;;;;;:::i;:::-;;:::i;24420:19::-;;;;;;;;;;-1:-1:-1;24420:19:0;;;;-1:-1:-1;;;;;24420:19:0;;;25796:24;;;;;;;;;;-1:-1:-1;25796:24:0;;;;-1:-1:-1;;;;;25796:24:0;;;34319:571;;;;;;;;;;-1:-1:-1;34319:571:0;;;;;:::i;:::-;;:::i;28310:143::-;;;;;;;;;;-1:-1:-1;28310:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;28418:18:0;;;28391:7;28418:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;28310:143;24989:32;;;;;;;;;;-1:-1:-1;24989:32:0;;;;-1:-1:-1;;;;;24989:32:0;;;32611:110;;;;;;;;;;-1:-1:-1;32611:110:0;;;;;:::i;:::-;;:::i;15106:244::-;;;;;;;;;;-1:-1:-1;15106:244:0;;;;;:::i;:::-;;:::i;33971:113::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;34047:21:0::1;34071:5;34047:21:::0;;;:10:::1;:21;::::0;;;;:29;;-1:-1:-1;;34047:29:0::1;::::0;;33971:113::o;27549:83::-;27586:13;27619:5;27612:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27549:83;:::o;28461:161::-;28536:4;28553:39;6734:10;28576:7;28585:6;28553:8;:39::i;:::-;-1:-1:-1;28610:4:0;28461:161;;;;;:::o;32855:122::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;32936:17:::1;:33:::0;;-1:-1:-1;;;;;;32936:33:0::1;-1:-1:-1::0;;;;;32936:33:0;;;::::1;::::0;;;::::1;::::0;;32855:122::o;34229:79::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;34285:8:::1;:15:::0;;-1:-1:-1;;34285:15:0::1;;;::::0;;34229:79::o;28630:313::-;28728:4;28745:36;28755:6;28763:9;28774:6;28745:9;:36::i;:::-;28792:121;28801:6;6734:10;28823:89;28861:6;28823:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28823:19:0;;;;;;:11;:19;;;;;;;;6734:10;28823:33;;;;;;;;;;:37;:89::i;:::-;28792:8;:121::i;:::-;-1:-1:-1;28931:4:0;28630:313;;;;;:::o;33706:253::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;33800:13:::1;::::0;-1:-1:-1;;;;;33787:26:0;;::::1;33800:13:::0;::::1;33787:26;;33779:62;;;::::0;-1:-1:-1;;;33779:62:0;;5658:2:1;33779:62:0::1;::::0;::::1;5640:21:1::0;5697:2;5677:18;;;5670:30;5736:26;5716:18;;;5709:54;5780:18;;33779:62:0::1;5456:348:1::0;33779:62:0::1;-1:-1:-1::0;;;;;33860:26:0;::::1;33881:4;33860:26;;33852:60;;;::::0;-1:-1:-1;;;33852:60:0;;6011:2:1;33852:60:0::1;::::0;::::1;5993:21:1::0;6050:2;6030:18;;;6023:30;-1:-1:-1;;;6069:18:1;;;6062:52;6131:18;;33852:60:0::1;5809:346:1::0;33852:60:0::1;-1:-1:-1::0;;;;;33923:21:0::1;;::::0;;;:10:::1;:21;::::0;;;;:28;;-1:-1:-1;;33923:28:0::1;33947:4;33923:28;::::0;;33706:253::o;30506:::-;30572:7;30611;;30600;:18;;30592:73;;;;-1:-1:-1;;;30592:73:0;;6362:2:1;30592:73:0;;;6344:21:1;6401:2;6381:18;;;6374:30;6440:34;6420:18;;;6413:62;-1:-1:-1;;;6491:18:1;;;6484:40;6541:19;;30592:73:0;6160:406:1;30592:73:0;30676:19;30699:10;:8;:10::i;:::-;30676:33;-1:-1:-1;30727:24:0;:7;30676:33;30727:11;:24::i;:::-;30720:31;30506:253;-1:-1:-1;;;30506:253:0:o;33544:150::-;33631:15;;33648:37;;-1:-1:-1;;;33648:37:0;;33679:4;33648:37;;;1844:51:1;-1:-1:-1;;;;;33609:21:0;;;;;;33631:15;;;33609:21;;33648:22;;1817:18:1;;33648:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33609:77;;-1:-1:-1;;;;;;33609:77:0;;;;;;;-1:-1:-1;;;;;6952:32:1;;;33609:77:0;;;6934:51:1;7001:18;;;6994:34;6907:18;;33609:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33544:150;:::o;33420:112::-;33476:15;;33468:56;;-1:-1:-1;;;;;33476:15:0;;;;33502:21;33468:56;;;;;33476:15;33468:56;33476:15;33468:56;33502:21;33476:15;33468:56;;;;;;;;;;;;;;;;;;;;;33420:112::o;31222:479::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31304:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;31296:60;;;::::0;-1:-1:-1;;;31296:60:0;;7491:2:1;31296:60:0::1;::::0;::::1;7473:21:1::0;7530:2;7510:18;;;7503:30;7569:29;7549:18;;;7542:57;7616:18;;31296:60:0::1;7289:351:1::0;31296:60:0::1;31372:9;31367:327;31391:9;:16:::0;31387:20;::::1;31367:327;;;31449:7;-1:-1:-1::0;;;;;31433:23:0::1;:9;31443:1;31433:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;31433:12:0::1;:23;31429:254;;;31492:9;31502:16:::0;;:20:::1;::::0;31521:1:::1;::::0;31502:20:::1;:::i;:::-;31492:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;31477:9:::1;:12:::0;;-1:-1:-1;;;;;31492:31:0;;::::1;::::0;31487:1;;31477:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;31477:46:0::1;-1:-1:-1::0;;;;;31477:46:0;;::::1;;::::0;;31542:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;31581:11:::1;:20:::0;;;;:28;;-1:-1:-1;;31581:28:0::1;::::0;;31628:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;31628:15:0;;;;;-1:-1:-1;;;;;;31628:15:0::1;::::0;;;;;33609:77;33544:150;:::o;31429:254::-:1;31409:3:::0;::::1;::::0;::::1;:::i;:::-;;;;31367:327;;28951:218:::0;6734:10;29039:4;29088:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;29088:34:0;;;;;;;;;;29039:4;;29056:83;;29079:7;;29088:50;;29127:10;29088:38;:50::i;29677:377::-;6734:10;29729:14;29778:19;;;:11;:19;;;;;;;;29777:20;29769:77;;;;-1:-1:-1;;;29769:77:0;;8513:2:1;29769:77:0;;;8495:21:1;8552:2;8532:18;;;8525:30;8591:34;8571:18;;;8564:62;-1:-1:-1;;;8642:18:1;;;8635:42;8694:19;;29769:77:0;8311:408:1;29769:77:0;29858:15;29882:19;29893:7;29882:10;:19::i;:::-;-1:-1:-1;;;;;;;;;29930:15:0;;;;;;:7;:15;;;;;;29857:44;;-1:-1:-1;29930:28:0;;:15;-1:-1:-1;29857:44:0;29930:19;:28::i;:::-;-1:-1:-1;;;;;29912:15:0;;;;;;:7;:15;;;;;:46;29979:7;;:20;;29991:7;29979:11;:20::i;:::-;29969:7;:30;30023:10;;:23;;30038:7;30023:14;:23::i;:::-;30010:10;:36;-1:-1:-1;;;29677:377:0:o;32488:111::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32557:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;32557:34:0::1;32587:4;32557:34;::::0;;32488:111::o;34899:109::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;34967:13:::1;::::0;34995:4:::1;::::0;;34952:48:::1;::::0;-1:-1:-1;;;34952:48:0;;-1:-1:-1;;;;;34995:4:0;;::::1;34952:48:::0;;::::1;1844:51:1::0;;;;34967:13:0;;::::1;::::0;34952:42:::1;::::0;1817:18:1;;34952:48:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;34899:109::o:0;30062:436::-;30152:7;30191;;30180;:18;;30172:62;;;;-1:-1:-1;;;30172:62:0;;8926:2:1;30172:62:0;;;8908:21:1;8965:2;8945:18;;;8938:30;9004:33;8984:18;;;8977:61;9055:18;;30172:62:0;8724:355:1;30172:62:0;30250:17;30245:246;;30285:15;30309:19;30320:7;30309:10;:19::i;:::-;-1:-1:-1;30284:44:0;;-1:-1:-1;30343:14:0;;-1:-1:-1;;;;;30343:14:0;30245:246;30392:23;30423:19;30434:7;30423:10;:19::i;:::-;-1:-1:-1;30390:52:0;;-1:-1:-1;30457:22:0;;-1:-1:-1;;;;;30457:22:0;32985:211;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;33080:10:::1;33070:6;:20;;33062:88;;;::::0;-1:-1:-1;;;33062:88:0;;9286:2:1;33062:88:0::1;::::0;::::1;9268:21:1::0;9325:2;9305:18;;;9298:30;9364:34;9344:18;;;9337:62;9435:25;9415:18;;;9408:53;9478:19;;33062:88:0::1;9084:419:1::0;33062:88:0::1;33174:14;:6:::0;33183:5:::1;33174:14;:::i;:::-;33161:10;:27:::0;-1:-1:-1;32985:211:0:o;30767:447::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30964:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;30963:21;30955:61;;;::::0;-1:-1:-1;;;30955:61:0;;7491:2:1;30955:61:0::1;::::0;::::1;7473:21:1::0;7530:2;7510:18;;;7503:30;7569:29;7549:18;;;7542:57;7616:18;;30955:61:0::1;7289:351:1::0;30955:61:0::1;-1:-1:-1::0;;;;;31030:16:0;::::1;31049:1;31030:16:::0;;;:7:::1;:16;::::0;;;;;:20;31027:108:::1;;-1:-1:-1::0;;;;;31106:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;31086:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;31067:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;31027:108:::1;-1:-1:-1::0;;;;;31145:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;31145:27:0::1;31168:4;31145:27:::0;;::::1;::::0;;;31183:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;31183:23:0::1;::::0;;::::1;::::0;;30767:447::o;32729:118::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;32808:15:::1;:31:::0;;-1:-1:-1;;;;;;32808:31:0::1;-1:-1:-1::0;;;;;32808:31:0;;;::::1;::::0;;;::::1;::::0;;32729:118::o;33204:204::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;33294:10:::1;33284:6;:20;;33276:84;;;::::0;-1:-1:-1;;;33276:84:0;;9883:2:1;33276:84:0::1;::::0;::::1;9865:21:1::0;9922:2;9902:18;;;9895:30;9961:34;9941:18;;;9934:62;-1:-1:-1;;;10012:18:1;;;10005:49;10071:19;;33276:84:0::1;9681:415:1::0;33276:84:0::1;33386:14;:6:::0;33395:5:::1;33386:14;:::i;:::-;33371:12;:29:::0;-1:-1:-1;33204:204:0:o;27929:198::-;-1:-1:-1;;;;;28019:20:0;;27995:7;28019:20;;;:11;:20;;;;;;;;28015:49;;;-1:-1:-1;;;;;;28048:16:0;;;;;:7;:16;;;;;;;27929:198::o;28015:49::-;-1:-1:-1;;;;;28102:16:0;;;;;;:7;:16;;;;;;28082:37;;:19;:37::i;14803:148::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;14910:1:::1;14894:6:::0;;14873:40:::1;::::0;-1:-1:-1;;;;;14894:6:0;;::::1;::::0;14873:40:::1;::::0;14910:1;;14873:40:::1;14941:1;14924:19:::0;;-1:-1:-1;;;;;;14924:19:0::1;::::0;;14803:148::o;42735:754::-;26134:13;;26087:11;;-1:-1:-1;;;;;26134:13:0;26120:10;:27;26117:45;;;-1:-1:-1;26158:4:0;26117:45;26227:15;;-1:-1:-1;;;;;26227:15:0;26205:10;:38;;:61;;;26260:6;26205:61;26183:130;;;;-1:-1:-1;;;26183:130:0;;10303:2:1;26183:130:0;;;10285:21:1;10342:2;10322:18;;;10315:30;-1:-1:-1;;;10361:18:1;;;10354:48;10419:18;;26183:130:0;10101:342:1;26183:130:0;42842:50:::1;::::0;-1:-1:-1;;;42842:50:0;;42866:10:::1;42842:50;::::0;::::1;10660:34:1::0;42886:4:0::1;10710:18:1::0;;;10703:43;42821:18:0::1;::::0;-1:-1:-1;;;;;42842:23:0;::::1;::::0;::::1;::::0;10595:18:1;;42842:50:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42821:71;;42922:6;42908:10;:20;42905:577;;42945:61;::::0;-1:-1:-1;;;42945:61:0;;42972:10:::1;42945:61;::::0;::::1;10997:34:1::0;42992:4:0::1;11047:18:1::0;;;11040:43;11099:18;;;11092:34;;;-1:-1:-1;;;;;42945:26:0;::::1;::::0;::::1;::::0;10932:18:1;;42945:61:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;43122:23;43192:15;;43176:13;;:31;;;;:::i;:::-;43158:13;::::0;43149:22:::1;::::0;:6;:22:::1;:::i;:::-;43148:60;;;;:::i;:::-;43122:86:::0;-1:-1:-1;43223:25:0::1;43251:24;43122:86:::0;43251:6;:24:::1;:::i;:::-;43360:15;::::0;43337:56:::1;::::0;-1:-1:-1;;;43337:56:0;;-1:-1:-1;;;;;43360:15:0;;::::1;43337:56;::::0;::::1;6934:51:1::0;7001:18;;;6994:34;;;43223:52:0;;-1:-1:-1;43337:22:0;::::1;::::0;::::1;::::0;6907:18:1;;43337:56:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;43432:17:0::1;::::0;43409:60:::1;::::0;-1:-1:-1;;;43409:60:0;;-1:-1:-1;;;;;43432:17:0;;::::1;43409:60;::::0;::::1;6934:51:1::0;7001:18;;;6994:34;;;43409:22:0;;::::1;::::0;::::1;::::0;6907:18:1;;43409:60:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;42930:552;;42808:681;26076:257:::0;42735:754;;:::o;27640:87::-;27679:13;27712:7;27705:14;;;;;:::i;29177:269::-;29270:4;29287:129;6734:10;29310:7;29319:96;29358:15;29319:96;;;;;;;;;;;;;;;;;6734:10;29319:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;29319:34:0;;;;;;;;;;;;:38;:96::i;28135:167::-;28213:4;28230:42;6734:10;28254:9;28265:6;28230:9;:42::i;34319:571::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;34457:7:::1;:27:::0;;;34495:13:::1;:32:::0;;;34538:15:::1;:36:::0;;;34556:18;34599:24:::1;34511:16:::0;34467:17;34599:24:::1;:::i;:::-;:42;;;;:::i;:::-;34587:9;:54:::0;;;34673:4:::1;-1:-1:-1::0;34660:17:0::1;34652:57;;;::::0;-1:-1:-1;;;34652:57:0;;11694:2:1;34652:57:0::1;::::0;::::1;11676:21:1::0;11733:2;11713:18;;;11706:30;11772:29;11752:18;;;11745:57;11819:18;;34652:57:0::1;11492:351:1::0;34652:57:0::1;34765:3;34745:15;;34729:13;;:31;;;;:::i;:::-;34728:40;;34720:101;;;::::0;-1:-1:-1;;;34720:101:0;;12050:2:1;34720:101:0::1;::::0;::::1;12032:21:1::0;12089:2;12069:18;;;12062:30;12128:34;12108:18;;;12101:62;-1:-1:-1;;;12179:18:1;;;12172:46;12235:19;;34720:101:0::1;11848:412:1::0;34720:101:0::1;34834:48;34866:15;;34850:13;;:31;;;;:::i;:::-;34834:15;:48::i;:::-;34319:571:::0;;;:::o;32611:110::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32678:27:0::1;32708:5;32678:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;32678:35:0::1;::::0;;32611:110::o;15106:244::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15195:22:0;::::1;15187:73;;;::::0;-1:-1:-1;;;15187:73:0;;12467:2:1;15187:73:0::1;::::0;::::1;12449:21:1::0;12506:2;12486:18;;;12479:30;12545:34;12525:18;;;12518:62;-1:-1:-1;;;12596:18:1;;;12589:36;12642:19;;15187:73:0::1;12265:402:1::0;15187:73:0::1;15297:6;::::0;;15276:38:::1;::::0;-1:-1:-1;;;;;15276:38:0;;::::1;::::0;15297:6;::::1;::::0;15276:38:::1;::::0;::::1;15325:6;:17:::0;;-1:-1:-1;;;;;;15325:17:0::1;-1:-1:-1::0;;;;;15325:17:0;;;::::1;::::0;;;::::1;::::0;;15106:244::o;38453:337::-;-1:-1:-1;;;;;38546:19:0;;38538:68;;;;-1:-1:-1;;;38538:68:0;;12874:2:1;38538:68:0;;;12856:21:1;12913:2;12893:18;;;12886:30;12952:34;12932:18;;;12925:62;-1:-1:-1;;;13003:18:1;;;12996:34;13047:19;;38538:68:0;12672:400:1;38538:68:0;-1:-1:-1;;;;;38625:21:0;;38617:68;;;;-1:-1:-1;;;38617:68:0;;13279:2:1;38617:68:0;;;13261:21:1;13318:2;13298:18;;;13291:30;13357:34;13337:18;;;13330:62;-1:-1:-1;;;13408:18:1;;;13401:32;13450:19;;38617:68:0;13077:398:1;38617:68:0;-1:-1:-1;;;;;38698:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;38750:32;;1662:25:1;;;38750:32:0;;1635:18:1;38750:32:0;;;;;;;38453:337;;;:::o;38798:1051::-;-1:-1:-1;;;;;38920:18:0;;38912:68;;;;-1:-1:-1;;;38912:68:0;;13682:2:1;38912:68:0;;;13664:21:1;13721:2;13701:18;;;13694:30;13760:34;13740:18;;;13733:62;-1:-1:-1;;;13811:18:1;;;13804:35;13856:19;;38912:68:0;13480:401:1;38912:68:0;-1:-1:-1;;;;;38999:16:0;;38991:64;;;;-1:-1:-1;;;38991:64:0;;14088:2:1;38991:64:0;;;14070:21:1;14127:2;14107:18;;;14100:30;14166:34;14146:18;;;14139:62;-1:-1:-1;;;14217:18:1;;;14210:33;14260:19;;38991:64:0;13886:399:1;38991:64:0;39083:1;39074:6;:10;39066:64;;;;-1:-1:-1;;;39066:64:0;;14492:2:1;39066:64:0;;;14474:21:1;14531:2;14511:18;;;14504:30;14570:34;14550:18;;;14543:62;-1:-1:-1;;;14621:18:1;;;14614:39;14670:19;;39066:64:0;14290:405:1;39066:64:0;14198:7;14225:6;-1:-1:-1;;;;;39144:15:0;;;14225:6;;39144:15;;;;:32;;-1:-1:-1;14198:7:0;14225:6;-1:-1:-1;;;;;39163:13:0;;;14225:6;;39163:13;;39144:32;39141:125;;;39209:12;;39199:6;:22;;39191:75;;;;-1:-1:-1;;;39191:75:0;;14902:2:1;39191:75:0;;;14884:21:1;14941:2;14921:18;;;14914:30;14980:34;14960:18;;;14953:62;-1:-1:-1;;;15031:18:1;;;15024:38;15079:19;;39191:75:0;14700:404:1;39191:75:0;39298:13;;-1:-1:-1;;;;;39290:21:0;;;39298:13;;39290:21;:40;;;;-1:-1:-1;39321:9:0;;-1:-1:-1;;;;;39315:15:0;;;39321:9;;39315:15;;39290:40;39287:137;;;39381:10;;39371:6;39355:13;39365:2;39355:9;:13::i;:::-;:22;;;;:::i;:::-;:36;;39347:65;;;;-1:-1:-1;;;39347:65:0;;15311:2:1;39347:65:0;;;15293:21:1;15350:2;15330:18;;;15323:30;-1:-1:-1;;;15369:18:1;;;15362:46;15425:18;;39347:65:0;15109:340:1;39347:65:0;-1:-1:-1;;;;;39624:24:0;;39497:12;39624:24;;;:18;:24;;;;;;39512:4;;39624:24;;;:50;;-1:-1:-1;;;;;;39652:22:0;;;;;;:18;:22;;;;;;;;39624:50;39621:96;;;-1:-1:-1;39700:5:0;39621:96;39803:38;39818:4;39823:2;39826:6;39833:7;39803:14;:38::i;2985:192::-;3071:7;3107:12;3099:6;;;;3091:29;;;;-1:-1:-1;;;3091:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3131:9:0;3143:5;3147:1;3143;:5;:::i;:::-;3131:17;2985:192;-1:-1:-1;;;;;2985:192:0:o;36472:163::-;36513:7;36534:15;36551;36570:19;:17;:19::i;:::-;36533:56;;-1:-1:-1;36533:56:0;-1:-1:-1;36607:20:0;36533:56;;36607:11;:20::i;:::-;36600:27;;;;36472:163;:::o;4383:132::-;4441:7;4468:39;4472:1;4475;4468:39;;;;;;;;;;;;;;;;;:3;:39::i;2082:181::-;2140:7;;2172:5;2176:1;2172;:5;:::i;:::-;2160:17;;2201:1;2196;:6;;2188:46;;;;-1:-1:-1;;;2188:46:0;;15656:2:1;2188:46:0;;;15638:21:1;15695:2;15675:18;;;15668:30;15734:29;15714:18;;;15707:57;15781:18;;2188:46:0;15454:351:1;35270:419:0;35329:7;35338;35347;35356;35365;35374;35395:23;35420:12;35434:18;35456:20;35468:7;35456:11;:20::i;:::-;35394:82;;;;;;35488:15;35505:23;35530:12;35546:50;35558:7;35567:4;35573:10;35585;:8;:10::i;:::-;35546:11;:50::i;:::-;35487:109;;;;-1:-1:-1;35487:109:0;;-1:-1:-1;35647:15:0;;-1:-1:-1;35664:4:0;;-1:-1:-1;35670:10:0;;-1:-1:-1;35270:419:0;;-1:-1:-1;;;;;35270:419:0:o;2546:136::-;2604:7;2631:43;2635:1;2638;2631:43;;;;;;;;;;;;;;;;;:3;:43::i;32365:115::-;32438:13;;32423:49;;-1:-1:-1;;;32423:49:0;;;;;1662:25:1;;;-1:-1:-1;;;;;32438:13:0;;;;32423:44;;1635:18:1;;32423:49:0;1516:177:1;39932:1114:0;40043:8;;;;;;;40039:114;;14198:7;14225:6;-1:-1:-1;;;;;40075:17:0;;;14225:6;;40075:17;40067:26;;;;;;-1:-1:-1;;;;;40176:18:0;;;;;;:10;:18;;;;;;;;;:43;;-1:-1:-1;;;;;;40198:21:0;;;;;;:10;:21;;;;;;;;40176:43;40173:126;;;40243:12;;;;40235:52;;;;-1:-1:-1;;;40235:52:0;;16012:2:1;40235:52:0;;;15994:21:1;16051:2;16031:18;;;16024:30;16090:29;16070:18;;;16063:57;16137:18;;40235:52:0;15810:351:1;40235:52:0;40323:7;40319:40;;40345:14;:12;:14::i;:::-;-1:-1:-1;;;;;40384:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;40408:22:0;;;;;;:11;:22;;;;;;;;40407:23;40384:46;40380:597;;;40447:48;40469:6;40477:9;40488:6;40447:21;:48::i;:::-;40380:597;;;-1:-1:-1;;;;;40518:19:0;;;;;;:11;:19;;;;;;;;40517:20;:46;;;;-1:-1:-1;;;;;;40541:22:0;;;;;;:11;:22;;;;;;;;40517:46;40513:464;;;40580:46;40600:6;40608:9;40619:6;40580:19;:46::i;40513:464::-;-1:-1:-1;;;;;40649:19:0;;;;;;:11;:19;;;;;;;;40648:20;:47;;;;-1:-1:-1;;;;;;40673:22:0;;;;;;:11;:22;;;;;;;;40672:23;40648:47;40644:333;;;40712:44;40730:6;40738:9;40749:6;40712:17;:44::i;40644:333::-;-1:-1:-1;;;;;40778:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;40801:22:0;;;;;;:11;:22;;;;;;;;40778:45;40774:203;;;40840:48;40862:6;40870:9;40881:6;40840:21;:48::i;40774:203::-;40921:44;40939:6;40947:9;40958:6;40921:17;:44::i;:::-;41001:7;40997:41;;41023:15;38239;;38229:7;:25;38281:21;;38265:13;:37;38185:125;36643:561;36740:7;;36776;;36693;;;;;36800:289;36824:9;:16;36820:20;;36800:289;;;36890:7;36866;:21;36874:9;36884:1;36874:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;36874:12:0;36866:21;;;;;;;;;;;;;:31;;:66;;;36925:7;36901;:21;36909:9;36919:1;36909:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;36909:12:0;36901:21;;;;;;;;;;;;;:31;36866:66;36862:97;;;36942:7;;36951;;36934:25;;;;;;;36643:561;;:::o;36862:97::-;36984:34;36996:7;:21;37004:9;37014:1;37004:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;37004:12:0;36996:21;;;;;;;;;;;;;36984:7;;:11;:34::i;:::-;36974:44;;37043:34;37055:7;:21;37063:9;37073:1;37063:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;37063:12:0;37055:21;;;;;;;;;;;;;37043:7;;:11;:34::i;:::-;37033:44;-1:-1:-1;36842:3:0;;;;:::i;:::-;;;;36800:289;;;-1:-1:-1;37125:7:0;;37113;;:20;;:11;:20::i;:::-;37103:7;:30;37099:61;;;37143:7;;37152;;37135:25;;;;;;36643:561;;:::o;37099:61::-;37179:7;;37188;;-1:-1:-1;36643:561:0;-1:-1:-1;36643:561:0:o;5011:278::-;5097:7;5132:12;5125:5;5117:28;;;;-1:-1:-1;;;5117:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5156:9:0;5168:5;5172:1;5168;:5;:::i;35697:330::-;35757:7;35766;35775;35795:12;35810:24;35826:7;35810:15;:24::i;:::-;35795:39;;35845:18;35866:30;35888:7;35866:21;:30::i;:::-;35845:51;-1:-1:-1;35907:23:0;35933:33;35845:51;35933:17;:7;35945:4;35933:11;:17::i;:::-;:21;;:33::i;:::-;35907:59;36002:4;;-1:-1:-1;36008:10:0;;-1:-1:-1;35697:330:0;;-1:-1:-1;;;35697:330:0:o;36035:429::-;36150:7;;;;36206:24;:7;36218:11;36206;:24::i;:::-;36188:42;-1:-1:-1;36241:12:0;36256:21;:4;36265:11;36256:8;:21::i;:::-;36241:36;-1:-1:-1;36288:18:0;36309:27;:10;36324:11;36309:14;:27::i;:::-;36288:48;-1:-1:-1;36347:23:0;36373:33;36288:48;36373:17;:7;36385:4;36373:11;:17::i;:33::-;36425:7;;;;-1:-1:-1;36451:4:0;;-1:-1:-1;36035:429:0;;-1:-1:-1;;;;;;;36035:429:0:o;37923:250::-;37969:7;;:12;:34;;;;-1:-1:-1;37985:13:0;;:18;37969:34;37966:46;;;37923:250::o;37966:46::-;38050:7;;;38032:15;:25;38092:13;;;38068:21;:37;-1:-1:-1;38126:11:0;;;;38148:17;37923:250::o;42158:566::-;42261:15;42278:23;42303:12;42317:23;42342:12;42356:18;42378:19;42389:7;42378:10;:19::i;:::-;-1:-1:-1;;;;;42426:15:0;;;;;;:7;:15;;;;;;42260:137;;-1:-1:-1;42260:137:0;;-1:-1:-1;42260:137:0;;-1:-1:-1;42260:137:0;-1:-1:-1;42260:137:0;-1:-1:-1;42260:137:0;-1:-1:-1;42426:28:0;;42446:7;42426:19;:28::i;:::-;-1:-1:-1;;;;;42408:15:0;;;;;;:7;:15;;;;;;;;:46;;;;42483:7;:15;;;;:28;;42503:7;42483:19;:28::i;:::-;-1:-1:-1;;;;;42465:15:0;;;;;;;:7;:15;;;;;;:46;;;;42543:18;;;;;;;:39;;42566:15;42543:22;:39::i;:::-;-1:-1:-1;;;;;42522:18:0;;;;;;:7;:18;;;;;:60;42596:26;42611:10;42596:14;:26::i;:::-;42633:23;42645:4;42651;42633:11;:23::i;:::-;42689:9;-1:-1:-1;;;;;42672:44:0;42681:6;-1:-1:-1;;;;;42672:44:0;;42700:15;42672:44;;;;1662:25:1;;1650:2;1635:18;;1516:177;42672:44:0;;;;;;;;42249:475;;;;;;42158:566;;;:::o;41564:586::-;41665:15;41682:23;41707:12;41721:23;41746:12;41760:18;41782:19;41793:7;41782:10;:19::i;:::-;-1:-1:-1;;;;;41830:15:0;;;;;;:7;:15;;;;;;41664:137;;-1:-1:-1;41664:137:0;;-1:-1:-1;41664:137:0;;-1:-1:-1;41664:137:0;-1:-1:-1;41664:137:0;-1:-1:-1;41664:137:0;-1:-1:-1;41830:28:0;;41664:137;41830:19;:28::i;:::-;-1:-1:-1;;;;;41812:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;41890:18;;;;;:7;:18;;;;;:39;;41913:15;41890:22;:39::i;:::-;-1:-1:-1;;;;;41869:18:0;;;;;;:7;:18;;;;;;;;:60;;;;41961:7;:18;;;;:39;;41984:15;41961:22;:39::i;41054:502::-;41153:15;41170:23;41195:12;41209:23;41234:12;41248:18;41270:19;41281:7;41270:10;:19::i;:::-;-1:-1:-1;;;;;41318:15:0;;;;;;:7;:15;;;;;;41152:137;;-1:-1:-1;41152:137:0;;-1:-1:-1;41152:137:0;;-1:-1:-1;41152:137:0;-1:-1:-1;41152:137:0;-1:-1:-1;41152:137:0;-1:-1:-1;41318:28:0;;41152:137;41318:19;:28::i;31711:642::-;31814:15;31831:23;31856:12;31870:23;31895:12;31909:18;31931:19;31942:7;31931:10;:19::i;:::-;-1:-1:-1;;;;;31979:15:0;;;;;;:7;:15;;;;;;31813:137;;-1:-1:-1;31813:137:0;;-1:-1:-1;31813:137:0;;-1:-1:-1;31813:137:0;-1:-1:-1;31813:137:0;-1:-1:-1;31813:137:0;-1:-1:-1;31979:28:0;;31999:7;31979:19;:28::i;:::-;-1:-1:-1;;;;;31961:15:0;;;;;;:7;:15;;;;;;;;:46;;;;32036:7;:15;;;;:28;;32056:7;32036:19;:28::i;37583:154::-;37647:7;37674:55;37713:5;37674:20;37686:7;;37674;:11;;:20;;;;:::i;:::-;:24;;:55::i;37745:166::-;37815:7;37842:61;37887:5;37842:26;37854:13;;37842:7;:11;;:26;;;;:::i;3436:471::-;3494:7;3739:6;3735:47;;-1:-1:-1;3769:1:0;3762:8;;3735:47;3794:9;3806:5;3810:1;3806;:5;:::i;:::-;3794:17;-1:-1:-1;3839:1:0;3830:5;3834:1;3794:17;3830:5;:::i;:::-;:10;3822:56;;;;-1:-1:-1;;;3822:56:0;;16368:2:1;3822:56:0;;;16350:21:1;16407:2;16387:18;;;16380:30;16446:34;16426:18;;;16419:62;-1:-1:-1;;;16497:18:1;;;16490:31;16538:19;;3822:56:0;16166:397:1;37216:355:0;37279:19;37302:10;:8;:10::i;:::-;37279:33;-1:-1:-1;37323:18:0;37344:27;:10;37279:33;37344:14;:27::i;:::-;37423:4;37407:22;;;;:7;:22;;;;;;37323:48;;-1:-1:-1;37407:38:0;;37323:48;37407:26;:38::i;:::-;37398:4;37382:22;;;;:7;:22;;;;;;;;:63;;;;37459:11;:26;;;;;;37456:107;;;37541:4;37525:22;;;;:7;:22;;;;;;:38;;37552:10;37525:26;:38::i;:::-;37516:4;37500:22;;;;:7;:22;;;;;:63;37268:303;;37216:355;:::o;35115:147::-;35193:7;;:17;;35205:4;35193:11;:17::i;:::-;35183:7;:27;35234:10;;:20;;35249:4;35234:14;:20::i;:::-;35221:10;:33;-1:-1:-1;;35115:147:0:o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;402:597::-;514:4;543:2;572;561:9;554:21;604:6;598:13;647:6;642:2;631:9;627:18;620:34;672:1;682:140;696:6;693:1;690:13;682:140;;;791:14;;;787:23;;781:30;757:17;;;776:2;753:26;746:66;711:10;;682:140;;;840:6;837:1;834:13;831:91;;;910:1;905:2;896:6;885:9;881:22;877:31;870:42;831:91;-1:-1:-1;983:2:1;962:15;-1:-1:-1;;958:29:1;943:45;;;;990:2;939:54;;402:597;-1:-1:-1;;;402:597:1:o;1004:315::-;1072:6;1080;1133:2;1121:9;1112:7;1108:23;1104:32;1101:52;;;1149:1;1146;1139:12;1101:52;1188:9;1175:23;1207:31;1232:5;1207:31;:::i;:::-;1257:5;1309:2;1294:18;;;;1281:32;;-1:-1:-1;;;1004:315:1:o;1906:456::-;1983:6;1991;1999;2052:2;2040:9;2031:7;2027:23;2023:32;2020:52;;;2068:1;2065;2058:12;2020:52;2107:9;2094:23;2126:31;2151:5;2126:31;:::i;:::-;2176:5;-1:-1:-1;2233:2:1;2218:18;;2205:32;2246:33;2205:32;2246:33;:::i;:::-;1906:456;;2298:7;;-1:-1:-1;;;2352:2:1;2337:18;;;;2324:32;;1906:456::o;2367:180::-;2426:6;2479:2;2467:9;2458:7;2454:23;2450:32;2447:52;;;2495:1;2492;2485:12;2447:52;-1:-1:-1;2518:23:1;;2367:180;-1:-1:-1;2367:180:1:o;3006:118::-;3092:5;3085:13;3078:21;3071:5;3068:32;3058:60;;3114:1;3111;3104:12;3129:309;3194:6;3202;3255:2;3243:9;3234:7;3230:23;3226:32;3223:52;;;3271:1;3268;3261:12;3223:52;3307:9;3294:23;3284:33;;3367:2;3356:9;3352:18;3339:32;3380:28;3402:5;3380:28;:::i;:::-;3427:5;3417:15;;;3129:309;;;;;:::o;3676:315::-;3744:6;3752;3805:2;3793:9;3784:7;3780:23;3776:32;3773:52;;;3821:1;3818;3811:12;3773:52;3857:9;3844:23;3834:33;;3917:2;3906:9;3902:18;3889:32;3930:31;3955:5;3930:31;:::i;3996:316::-;4073:6;4081;4089;4142:2;4130:9;4121:7;4117:23;4113:32;4110:52;;;4158:1;4155;4148:12;4110:52;-1:-1:-1;;4181:23:1;;;4251:2;4236:18;;4223:32;;-1:-1:-1;4302:2:1;4287:18;;;4274:32;;3996:316;-1:-1:-1;3996:316:1:o;4317:388::-;4385:6;4393;4446:2;4434:9;4425:7;4421:23;4417:32;4414:52;;;4462:1;4459;4452:12;4414:52;4501:9;4488:23;4520:31;4545:5;4520:31;:::i;:::-;4570:5;-1:-1:-1;4627:2:1;4612:18;;4599:32;4640:33;4599:32;4640:33;:::i;4710:356::-;4912:2;4894:21;;;4931:18;;;4924:30;4990:34;4985:2;4970:18;;4963:62;5057:2;5042:18;;4710:356::o;5071:380::-;5150:1;5146:12;;;;5193;;;5214:61;;5268:4;5260:6;5256:17;5246:27;;5214:61;5321:2;5313:6;5310:14;5290:18;5287:38;5284:161;;;5367:10;5362:3;5358:20;5355:1;5348:31;5402:4;5399:1;5392:15;5430:4;5427:1;5420:15;5284:161;;5071:380;;;:::o;6571:184::-;6641:6;6694:2;6682:9;6673:7;6669:23;6665:32;6662:52;;;6710:1;6707;6700:12;6662:52;-1:-1:-1;6733:16:1;;6571:184;-1:-1:-1;6571:184:1:o;7039:245::-;7106:6;7159:2;7147:9;7138:7;7134:23;7130:32;7127:52;;;7175:1;7172;7165:12;7127:52;7207:9;7201:16;7226:28;7248:5;7226:28;:::i;7645:127::-;7706:10;7701:3;7697:20;7694:1;7687:31;7737:4;7734:1;7727:15;7761:4;7758:1;7751:15;7777:127;7838:10;7833:3;7829:20;7826:1;7819:31;7869:4;7866:1;7859:15;7893:4;7890:1;7883:15;7909:125;7949:4;7977:1;7974;7971:8;7968:34;;;7982:18;;:::i;:::-;-1:-1:-1;8019:9:1;;7909:125::o;8039:127::-;8100:10;8095:3;8091:20;8088:1;8081:31;8131:4;8128:1;8121:15;8155:4;8152:1;8145:15;8171:135;8210:3;-1:-1:-1;;8231:17:1;;8228:43;;;8251:18;;:::i;:::-;-1:-1:-1;8298:1:1;8287:13;;8171:135::o;9508:168::-;9548:7;9614:1;9610;9606:6;9602:14;9599:1;9596:21;9591:1;9584:9;9577:17;9573:45;9570:71;;;9621:18;;:::i;:::-;-1:-1:-1;9661:9:1;;9508:168::o;11137:128::-;11177:3;11208:1;11204:6;11201:1;11198:13;11195:39;;;11214:18;;:::i;:::-;-1:-1:-1;11250:9:1;;11137:128::o;11270:217::-;11310:1;11336;11326:132;;11380:10;11375:3;11371:20;11368:1;11361:31;11415:4;11412:1;11405:15;11443:4;11440:1;11433:15;11326:132;-1:-1:-1;11472:9:1;;11270:217::o

Swarm Source

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