ETH Price: $3,299.33 (-3.69%)
Gas: 8 Gwei

Token

Sick Cunt Money (SIKCNT)
 

Overview

Max Total Supply

777,000,000,000 SIKCNT

Holders

165

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
100,000,000 SIKCNT

Value
$0.00
0x15221247FC4CaFbb3e0e40C0281A3703d5C4FceA
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SickCunt

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 3 of 3: SickCunt.sol
pragma solidity ^0.8.13;
// SPDX-License-Identifier: ZYZZ LICENSED (UNLICENSED)

//                                 *((///(*
//                                 /,,*,#(/
//                                (,,,*#*,
//                               (,,,/(*,
//                             (/,,,,,,,
//                      #&%(%&&,,,,,,,,
//                     ((##%*##*,,,,,*
//                    ****#%,(&(,,,,,
//                     ,,,,,**,,,,,,,,     *#
//                    .,,,,,.,,,,///*,,,******
//                    %*.....,,,,,,,,,,
//                  %%%%#**,,,,,.
//                /%%%%%#//,,*
//               %%%%%##//,**
//             *&&&&&%#(/*(*
//            &&&&&&##(/***
//           @&&&&%#(//***
//          @&&&%##(//*///
//         &&&&%##(/(//**/                                  #         /&
//       &&&&&%%####(****                                     (%%&&&&&&@@&%
//      %%%%%%%##((******                                       /#,(%%(%&&&&%
//      #%%%%#((//**,,,*                                          ,,,,*(#&&%&@&,
//      ###((((((/*,,,,                                              **///*(&&@@@&%
//     /#((((##(//*,,,                                               /%/,,*((%&@@@&&
//     (%&%(((#%%#*,*,                         &&& ,* ,              ***,,*/#%#%@@@@&&#
//    (#%&&&&&&&%#%&(                        @@%(*****,***/(**/*    *,,,,, ,/%%%%&@@@@@&#
//    *(#%&&&&%&&&&&&&%                    /*(*,*(%%%%#/,..,**,,*             (##%&&@@@@@&%
//     (##%%&&&&&&&&%#%%                   ,,%&&&#**/(#%%#/*.,,,**              #%%&&&@@@@&&&.
//     ((##%%&%%%%%%%%###                 /(#*#%#/(/#(#%(##*,,,,,*               /%%&&@@@@@@&%&/
//    ,((##########%%%##((               /,#&&#/#&&&&&&%%#/*,.,,,,                ,#%&&&&&&&%%%#%
//    ,############%%%##((              (&#%&&#%&&@@@&%%%(**..,..,*                /(##%%%&%#######
//    (##%%%%########%%(/*             #%##%%%&&&%&&&&%%(*,....,,,*                 **/(#%##%&#(####
//     (###############(**             #(((//(((###%%%###/*,...,,,*                  ///(####(((%####/
//     */(########(###(**(%&          ./..,,,,,,,,,*/////*,,*...,.,*                  (((//##((((((####
//      */(((######((((/#%%&&@%       *,,,.,,,,,,,.....,,.......,,,*                  (///////(%##(((((
//      *,**//((#####//(&&&&%&&&&      ,,,,,.....,,,..,,,,,.....,*,                   #(///////((##(/**
//       *,,,**/(####%#%&@&&&&&&&%     ((,,,/#%#(//**,,,,,....,,,*             %%%%%%#(((//((###(/*,,,*
//         ,,**/((#%##%%&@@@&&%%%##   (%%%%##(/(((((##(/*,.,,,,,*          %%%#%%&%####(##%%###/*,,,,*/
//          ,,/(##((###%&&@@@&&&%%#(((##%%&%%%%##((##(/**,.....         .#%###%#%&%(#%#%(/((/,,,,,,,,
//           */((##(#&#%%&&&&&&&&&%%###%&&&&%%%%#&%#(//*,,...*       %%#%%##((/(#%#%#(//(**,...,,,*
//            /(&&&&&##%%&&&&&&&&&&&%%%&&&%###%&%(((//*/***   ##%#%%#(#((#((//(##((/(//*,,.,..,,,*
//           &%&@@@%#(##%%&&&&&&&@&@&&&%%&%#%%&%#(((//(((%(%####&##((/(///*(((//#(//(**,...,,,,,
//           %%&@&%%#(###%%&&&&&&&&&&&&%%#%%&&&&&&&&&&&&&##%#%%%#%((/*(####/(((//((/*,,,..,,,,,
//          (##&&&&&%(####%%%&&&&&%%%#####%&&&&&&&&&&&&&&&&%%%%%#((/,.##(*****//***,.....,,,*
//          ###%%%&%%###%%%%%#%%&&&%%%%##&&%%%&&&&&&&&&&%%%%%#/***....,,,,,..,..,........,
//           (#%%%%%%####%%%%##%%%%%%%#%&&&&&&&&%&&&%%%%%%##((/*,.....,////,,,........,
//           (#%%%%&%%#####%%%%%%%%%%%%&&&&&&&&&&%%%%%####(((/**,.,..,#/,.........,
//           ##%&&&%%##(/(##%%%%&&&&%%%&%&&&&&%%%%#%#####((//*,..,**#%#/*.....,
//           /#%&&&%%%#///##%%%%%&&&%%%%%%&&%%%#####(((((((//*,,,*/(###/*,,,
//           /###%#%%%%%#####%%%%%%%%#%%%%%%%#####((/////(///*,,,(#((//**/
//           *(#%%#(#%%%###########((####%%%#####(((***//((/*,,,(#(///*,*
//            (/(#%%##%%%##((###%#/*(((#####%#####((((((((////((#(//*,,*
//            /((/(((((##%%&%((//((%&%%(%%#########(((##(((((((///*,,,,
//            */(##(#%&%###%&&&&&@@&@@@&(((##%%%%##(#((*,*///*****,,,
//             (,//((##%%%#%%%%&&&&&&@&&&&&&%#((////***((((//*****,
//             ((#%#(##(##((##%%#(/(##%%########((((##(/*******,,*
//              //((((//(#%%%%%##((#(##%###(((//(((((/*,,.....,,,
//             .///(((//########((####%%%%%##((//****/////*,..,,
//             .//*/////((////((((#((((((####((((//////**,,,..*
//              *//*,,,//**///***///**,****///(//****,********
//              .,,**,,,***(##(((/((((####(/****,,,((/*******
//               ,,***,,,**//((((((((((((((((/***///*****////
//               ,*****,,,,,,*///((///*/*///*/*********////((
//                *****,,,,,,.,***/****///*,,,,*****///((((###
//                ******,,,**/(((##((((((((((//////((((/(((###(
//                ****///*,,/*/(((((*((#(((/////*//////(((((((/
//                ,****//*,,,***/(((((/(///******///////(((//**
//                 *******,,*,,**//////*,,,***//(((/((/*********
//                ./,,,*///*,,***********/*//*///////////*///*/(,
//               ,/((((**////*,******////////*/////(///*/((//////
//             ,,(#((((((/*/((/***********/*///(((/////##(((////%/,
//           ,...,/#%&&%##/**/(/*/////////*////////*(##%#((##((&/**
//          ....,,,,///(%&&&(**((//*//*/////////*,/##%%%#(((&&(**.,,
//          ......,****/**//**/((//************.,(##((//*///*,**,,,,,
//          ,.......*////*/,/***/**//***,*////*////*///******,******,,
//         ,..........,//**///*,.**,//.****/////*///////(/*//////....,
//        ... ...........*/*,*//*,///**/*/////////**,.**,**..,*,.. .,,
//    .(*.....      ............,///*.,./****,.   ....,,*/,  .  ...,.
//      ,*,....        .  ...    ...         ............... .......
//      *,*/,...                            .....   .....  .        .
//    /((/*.,/**/*                 .,       .....   .            ....
//   /(/////*.    .                                          .......
//  */////****,.                                           ... .....

import "./Owned.sol";
import "./ERC20.sol";

contract SickCunt is ERC20, Owned {
    /*/////////////////////////////////////////////////
                      ERRORS + EVENTS
    /////////////////////////////////////////////////*/

    event TaxPaused(bool paused);
    event TaxTimeSet(uint256 startTime, uint256 endTime);

    /*/////////////////////////////////////////////////
                            STATE 
    /////////////////////////////////////////////////*/

    /// @notice tax percent (x 100). MK677 doesn't pay for itself
    uint256 public constant taxPct = 500;

    /// @notice Gotta tip the plug brah
    address public MK677_PLUG;

    /// @notice whitelist for tax avoiding senders
    mapping(address => bool) noTaxWhitelisted;

    /// @notice start time of tax period
    uint256 public startTime;

    /// @notice end time of tax period
    uint256 public endTime;

    /// @notice Flag to pause tax during tax period
    bool public taxActive;

    constructor(
        uint256 _totalSuply,
        address _owner,
        address _tax_receiver
    ) Owned(_owner) {
        /// only time _mint is called
        _mint(_owner, _totalSuply);

        taxActive = true;
        owner = _owner;
        MK677_PLUG = _tax_receiver;

        /// initial tax period is 1 hour post deployment
        _setTaxTime(block.timestamp, block.timestamp + 1 hours);

        /// initial tax free sender whitelist
        noTaxWhitelisted[_owner] = true;
        noTaxWhitelisted[_tax_receiver] = true;
    }

    /*//////////////////////////////////////////////////////////////
                             ERC20 OVERRIDES
    //////////////////////////////////////////////////////////////*/

    /// @notice Name of the token.
    function name() public pure override returns (string memory) {
        return "Sick Cunt Money";
    }

    /// @notice Symbol of the token.
    function symbol() public pure override returns (string memory) {
        return "SIKCNT";
    }

    /**
     * @notice Custom implementation of transfer function accounting for tax
     * @dev THIS SPECIFIC IMPLEMENTATION IS MORE GAS WITH SOLADY THAN SOLMATE BUT WE MUST USE SOLADY
     * IF YOU ARENT USING CUSTOM LOGIC, WHY ARENT YOU USING SOLADY?
     * @param to Address to credit tokens
     * @param amount Amount of tokens to transfer
     */
    function transfer(
        address to,
        uint256 amount
    ) public override returns (bool) {
        uint256 taxAmount = calculateTax(amount, to);
        _transfer(msg.sender, to, amount - taxAmount);

        if (taxAmount > 0) {
            _transfer(msg.sender, MK677_PLUG, taxAmount);
        }
        return true;
    }

    /**
     * @notice Cusotm implementation of transferFrom function accounting for tax
     * @dev THIS SPECIFIC IMPLEMENTATION IS MORE GAS WITH SOLADY THAN SOLMATE BUT WE MUST USE SOLADY
     * IF YOU ARENT USING CUSTOM LOGIC, WHY ARENT YOU USING SOLADY?
     * @param from Account sending tokens
     * @param to Account receiving tokens
     * @param amount Amount of tokens to transfer
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public override returns (bool) {
        uint256 _allowance = allowance(from, msg.sender);
        if (amount > _allowance) revert InsufficientAllowance();

        uint256 taxAmount = calculateTax(amount, to);
        _transfer(from, to, amount - taxAmount);

        if (taxAmount > 0) {
            _transfer(from, MK677_PLUG, taxAmount);
        }
        return true;
    }

    /*//////////////////////////////////////////////////////////////
                             OWNERSHIP LOGIC
    //////////////////////////////////////////////////////////////*/

    function pauseTax(bool paused) external onlyOwner {
        taxActive = !paused;
        emit TaxPaused(paused);
    }

    function setTaxTime(
        uint256 _startTime,
        uint256 _endTime
    ) external onlyOwner {
        _setTaxTime(_startTime, _endTime);
    }

    function toggleNoTaxWhitelist(
        address account,
        bool taxFree
    ) external onlyOwner {
        noTaxWhitelisted[account] = taxFree;
    }

    function changeTaxReceiver(address newReceiver) external onlyOwner {
        MK677_PLUG = newReceiver;
    }

    /*//////////////////////////////////////////////////////////////
                             INTERNAL LOGIC
    //////////////////////////////////////////////////////////////*/

    function _setTaxTime(uint256 _startTime, uint256 _endTime) internal {
        if (block.timestamp > _endTime) revert("bad time range");
        if (_startTime > _endTime) revert("bad time range");

        startTime = _startTime;
        endTime = _endTime;

        emit TaxTimeSet(_startTime, _endTime);
    }

    function inTimeRange() internal view returns (bool) {
        return block.timestamp >= startTime && block.timestamp <= endTime;
    }

    function calculateTax(
        uint256 amount,
        address to
    ) internal view returns (uint256 taxAmount) {
        if (
            taxActive &&
            inTimeRange() &&
            !noTaxWhitelisted[msg.sender] &&
            !noTaxWhitelisted[to]
        ) {
            taxAmount = (amount * taxPct) / 10000;
        }
    }
}

File 1 of 3: ERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

/// @notice Simple ERC20 + EIP-2612 implementation.
/// @author Solady (https://github.com/vectorized/solady/blob/main/src/tokens/ERC20.sol)
/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)
/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol)
/// Note:
/// The ERC20 standard allows minting and transferring to and from the zero address,
/// minting and transferring zero tokens, as well as self-approvals.
/// For performance, this implementation WILL NOT revert for such actions.
/// Please add any checks with overrides if desired.
abstract contract ERC20 {
    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                       CUSTOM ERRORS                        */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev The total supply has overflowed.
    error TotalSupplyOverflow();

    /// @dev The allowance has overflowed.
    error AllowanceOverflow();

    /// @dev The allowance has underflowed.
    error AllowanceUnderflow();

    /// @dev Insufficient balance.
    error InsufficientBalance();

    /// @dev Insufficient allowance.
    error InsufficientAllowance();

    /// @dev The permit is invalid.
    error InvalidPermit();

    /// @dev The permit has expired.
    error PermitExpired();

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                           EVENTS                           */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Emitted when `amount` tokens is transferred from `from` to `to`.
    event Transfer(address indexed from, address indexed to, uint256 amount);

    /// @dev Emitted when `amount` tokens is approved by `owner` to be used by `spender`.
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 amount
    );

    /// @dev `keccak256(bytes("Transfer(address,address,uint256)"))`.
    uint256 private constant _TRANSFER_EVENT_SIGNATURE =
        0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef;

    /// @dev `keccak256(bytes("Approval(address,address,uint256)"))`.
    uint256 private constant _APPROVAL_EVENT_SIGNATURE =
        0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925;

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                          STORAGE                           */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev The storage slot for the total supply.
    uint256 private constant _TOTAL_SUPPLY_SLOT = 0x05345cdf77eb68f44c;

    /// @dev The balance slot of `owner` is given by:
    /// ```
    ///     mstore(0x0c, _BALANCE_SLOT_SEED)
    ///     mstore(0x00, owner)
    ///     let balanceSlot := keccak256(0x0c, 0x20)
    /// ```
    uint256 private constant _BALANCE_SLOT_SEED = 0x87a211a2;

    /// @dev The allowance slot of (`owner`, `spender`) is given by:
    /// ```
    ///     mstore(0x20, spender)
    ///     mstore(0x0c, _ALLOWANCE_SLOT_SEED)
    ///     mstore(0x00, owner)
    ///     let allowanceSlot := keccak256(0x0c, 0x34)
    /// ```
    uint256 private constant _ALLOWANCE_SLOT_SEED = 0x7f5e9f20;

    /// @dev The nonce slot of `owner` is given by:
    /// ```
    ///     mstore(0x0c, _NONCES_SLOT_SEED)
    ///     mstore(0x00, owner)
    ///     let nonceSlot := keccak256(0x0c, 0x20)
    /// ```
    uint256 private constant _NONCES_SLOT_SEED = 0x38377508;

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                       ERC20 METADATA                       */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Returns the name of the token.
    function name() public view virtual returns (string memory);

    /// @dev Returns the symbol of the token.
    function symbol() public view virtual returns (string memory);

    /// @dev Returns the decimals places of the token.
    function decimals() public view virtual returns (uint8) {
        return 18;
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                           ERC20                            */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Returns the amount of tokens in existence.
    function totalSupply() public view virtual returns (uint256 result) {
        /// @solidity memory-safe-assembly
        assembly {
            result := sload(_TOTAL_SUPPLY_SLOT)
        }
    }

    /// @dev Returns the amount of tokens owned by `owner`.
    function balanceOf(
        address owner
    ) public view virtual returns (uint256 result) {
        /// @solidity memory-safe-assembly
        assembly {
            mstore(0x0c, _BALANCE_SLOT_SEED)
            mstore(0x00, owner)
            result := sload(keccak256(0x0c, 0x20))
        }
    }

    /// @dev Returns the amount of tokens that `spender` can spend on behalf of `owner`.
    function allowance(
        address owner,
        address spender
    ) public view virtual returns (uint256 result) {
        /// @solidity memory-safe-assembly
        assembly {
            mstore(0x20, spender)
            mstore(0x0c, _ALLOWANCE_SLOT_SEED)
            mstore(0x00, owner)
            result := sload(keccak256(0x0c, 0x34))
        }
    }

    /// @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
    ///
    /// Emits a {Approval} event.
    function approve(
        address spender,
        uint256 amount
    ) public virtual returns (bool) {
        /// @solidity memory-safe-assembly
        assembly {
            // Compute the allowance slot and store the amount.
            mstore(0x20, spender)
            mstore(0x0c, _ALLOWANCE_SLOT_SEED)
            mstore(0x00, caller())
            sstore(keccak256(0x0c, 0x34), amount)
            // Emit the {Approval} event.
            mstore(0x00, amount)
            log3(
                0x00,
                0x20,
                _APPROVAL_EVENT_SIGNATURE,
                caller(),
                shr(96, mload(0x2c))
            )
        }
        return true;
    }

    /// @dev Atomically increases the allowance granted to `spender` by the caller.
    ///
    /// Emits a {Approval} event.
    function increaseAllowance(
        address spender,
        uint256 difference
    ) public virtual returns (bool) {
        /// @solidity memory-safe-assembly
        assembly {
            // Compute the allowance slot and load its value.
            mstore(0x20, spender)
            mstore(0x0c, _ALLOWANCE_SLOT_SEED)
            mstore(0x00, caller())
            let allowanceSlot := keccak256(0x0c, 0x34)
            let allowanceBefore := sload(allowanceSlot)
            // Add to the allowance.
            let allowanceAfter := add(allowanceBefore, difference)
            // Revert upon overflow.
            if lt(allowanceAfter, allowanceBefore) {
                mstore(0x00, 0xf9067066) // `AllowanceOverflow()`.
                revert(0x1c, 0x04)
            }
            // Store the updated allowance.
            sstore(allowanceSlot, allowanceAfter)
            // Emit the {Approval} event.
            mstore(0x00, allowanceAfter)
            log3(
                0x00,
                0x20,
                _APPROVAL_EVENT_SIGNATURE,
                caller(),
                shr(96, mload(0x2c))
            )
        }
        return true;
    }

    /// @dev Atomically decreases the allowance granted to `spender` by the caller.
    ///
    /// Emits a {Approval} event.
    function decreaseAllowance(
        address spender,
        uint256 difference
    ) public virtual returns (bool) {
        /// @solidity memory-safe-assembly
        assembly {
            // Compute the allowance slot and load its value.
            mstore(0x20, spender)
            mstore(0x0c, _ALLOWANCE_SLOT_SEED)
            mstore(0x00, caller())
            let allowanceSlot := keccak256(0x0c, 0x34)
            let allowanceBefore := sload(allowanceSlot)
            // Revert if will underflow.
            if lt(allowanceBefore, difference) {
                mstore(0x00, 0x8301ab38) // `AllowanceUnderflow()`.
                revert(0x1c, 0x04)
            }
            // Subtract and store the updated allowance.
            let allowanceAfter := sub(allowanceBefore, difference)
            sstore(allowanceSlot, allowanceAfter)
            // Emit the {Approval} event.
            mstore(0x00, allowanceAfter)
            log3(
                0x00,
                0x20,
                _APPROVAL_EVENT_SIGNATURE,
                caller(),
                shr(96, mload(0x2c))
            )
        }
        return true;
    }

    /// @dev Transfer `amount` tokens from the caller to `to`.
    ///
    /// Requirements:
    /// - `from` must at least have `amount`.
    ///
    /// Emits a {Transfer} event.
    function transfer(
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        _beforeTokenTransfer(msg.sender, to, amount);
        /// @solidity memory-safe-assembly
        assembly {
            // Compute the balance slot and load its value.
            mstore(0x0c, _BALANCE_SLOT_SEED)
            mstore(0x00, caller())
            let fromBalanceSlot := keccak256(0x0c, 0x20)
            let fromBalance := sload(fromBalanceSlot)
            // Revert if insufficient balance.
            if gt(amount, fromBalance) {
                mstore(0x00, 0xf4d678b8) // `InsufficientBalance()`.
                revert(0x1c, 0x04)
            }
            // Subtract and store the updated balance.
            sstore(fromBalanceSlot, sub(fromBalance, amount))
            // Compute the balance slot of `to`.
            mstore(0x00, to)
            let toBalanceSlot := keccak256(0x0c, 0x20)
            // Add and store the updated balance of `to`.
            // Will not overflow because the sum of all user balances
            // cannot exceed the maximum uint256 value.
            sstore(toBalanceSlot, add(sload(toBalanceSlot), amount))
            // Emit the {Transfer} event.
            mstore(0x20, amount)
            log3(
                0x20,
                0x20,
                _TRANSFER_EVENT_SIGNATURE,
                caller(),
                shr(96, mload(0x0c))
            )
        }
        _afterTokenTransfer(msg.sender, to, amount);
        return true;
    }

    /// @dev Transfers `amount` tokens from `from` to `to`.
    ///
    /// Note: does not update the allowance if it is the maximum uint256 value.
    ///
    /// Requirements:
    /// - `from` must at least have `amount`.
    /// - The caller must have at least `amount` of allowance to transfer the tokens of `from`.
    ///
    /// Emits a {Transfer} event.
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        _beforeTokenTransfer(from, to, amount);
        /// @solidity memory-safe-assembly
        assembly {
            let from_ := shl(96, from)
            // Compute the allowance slot and load its value.
            mstore(0x20, caller())
            mstore(0x0c, or(from_, _ALLOWANCE_SLOT_SEED))
            let allowanceSlot := keccak256(0x0c, 0x34)
            let allowance_ := sload(allowanceSlot)
            // If the allowance is not the maximum uint256 value.
            if iszero(eq(allowance_, not(0))) {
                // Revert if the amount to be transferred exceeds the allowance.
                if gt(amount, allowance_) {
                    mstore(0x00, 0x13be252b) // `InsufficientAllowance()`.
                    revert(0x1c, 0x04)
                }
                // Subtract and store the updated allowance.
                sstore(allowanceSlot, sub(allowance_, amount))
            }
            // Compute the balance slot and load its value.
            mstore(0x0c, or(from_, _BALANCE_SLOT_SEED))
            let fromBalanceSlot := keccak256(0x0c, 0x20)
            let fromBalance := sload(fromBalanceSlot)
            // Revert if insufficient balance.
            if gt(amount, fromBalance) {
                mstore(0x00, 0xf4d678b8) // `InsufficientBalance()`.
                revert(0x1c, 0x04)
            }
            // Subtract and store the updated balance.
            sstore(fromBalanceSlot, sub(fromBalance, amount))
            // Compute the balance slot of `to`.
            mstore(0x00, to)
            let toBalanceSlot := keccak256(0x0c, 0x20)
            // Add and store the updated balance of `to`.
            // Will not overflow because the sum of all user balances
            // cannot exceed the maximum uint256 value.
            sstore(toBalanceSlot, add(sload(toBalanceSlot), amount))
            // Emit the {Transfer} event.
            mstore(0x20, amount)
            log3(
                0x20,
                0x20,
                _TRANSFER_EVENT_SIGNATURE,
                shr(96, from_),
                shr(96, mload(0x0c))
            )
        }
        _afterTokenTransfer(from, to, amount);
        return true;
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                          EIP-2612                          */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Returns the current nonce for `owner`.
    /// This value is used to compute the signature for EIP-2612 permit.
    function nonces(
        address owner
    ) public view virtual returns (uint256 result) {
        /// @solidity memory-safe-assembly
        assembly {
            // Compute the nonce slot and load its value.
            mstore(0x0c, _NONCES_SLOT_SEED)
            mstore(0x00, owner)
            result := sload(keccak256(0x0c, 0x20))
        }
    }

    /// @dev Sets `value` as the allowance of `spender` over the tokens of `owner`,
    /// authorized by a signed approval by `owner`.
    ///
    /// Emits a {Approval} event.
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        bytes32 domainSeparator = DOMAIN_SEPARATOR();
        /// @solidity memory-safe-assembly
        assembly {
            // Grab the free memory pointer.
            let m := mload(0x40)
            // Revert if the block timestamp greater than `deadline`.
            if gt(timestamp(), deadline) {
                mstore(0x00, 0x1a15a3cc) // `PermitExpired()`.
                revert(0x1c, 0x04)
            }
            // Clean the upper 96 bits.
            owner := shr(96, shl(96, owner))
            spender := shr(96, shl(96, spender))
            // Compute the nonce slot and load its value.
            mstore(0x0c, _NONCES_SLOT_SEED)
            mstore(0x00, owner)
            let nonceSlot := keccak256(0x0c, 0x20)
            let nonceValue := sload(nonceSlot)
            // Increment and store the updated nonce.
            sstore(nonceSlot, add(nonceValue, 1))
            // Prepare the inner hash.
            // `keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)")`.
            // forgefmt: disable-next-item
            mstore(
                m,
                0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9
            )
            mstore(add(m, 0x20), owner)
            mstore(add(m, 0x40), spender)
            mstore(add(m, 0x60), value)
            mstore(add(m, 0x80), nonceValue)
            mstore(add(m, 0xa0), deadline)
            // Prepare the outer hash.
            mstore(0, 0x1901)
            mstore(0x20, domainSeparator)
            mstore(0x40, keccak256(m, 0xc0))
            // Prepare the ecrecover calldata.
            mstore(0, keccak256(0x1e, 0x42))
            mstore(0x20, and(0xff, v))
            mstore(0x40, r)
            mstore(0x60, s)
            pop(staticcall(gas(), 1, 0, 0x80, 0x20, 0x20))
            // If the ecrecover fails, the returndatasize will be 0x00,
            // `owner` will be be checked if it equals the hash at 0x00,
            // which evaluates to false (i.e. 0), and we will revert.
            // If the ecrecover succeeds, the returndatasize will be 0x20,
            // `owner` will be compared against the returned address at 0x20.
            if iszero(eq(mload(returndatasize()), owner)) {
                mstore(0x00, 0xddafbaef) // `InvalidPermit()`.
                revert(0x1c, 0x04)
            }
            // Compute the allowance slot and store the value.
            // The `owner` is already at slot 0x20.
            mstore(0x40, or(shl(160, _ALLOWANCE_SLOT_SEED), spender))
            sstore(keccak256(0x2c, 0x34), value)
            // Emit the {Approval} event.
            log3(add(m, 0x60), 0x20, _APPROVAL_EVENT_SIGNATURE, owner, spender)
            mstore(0x40, m) // Restore the free memory pointer.
            mstore(0x60, 0) // Restore the zero pointer.
        }
    }

    /// @dev Returns the EIP-2612 domains separator.
    function DOMAIN_SEPARATOR() public view virtual returns (bytes32 result) {
        /// @solidity memory-safe-assembly
        assembly {
            result := mload(0x40) // Grab the free memory pointer.
        }
        //  We simply calculate it on-the-fly to allow for cases where the `name` may change.
        bytes32 nameHash = keccak256(bytes(name()));
        /// @solidity memory-safe-assembly
        assembly {
            let m := result
            // `keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)")`.
            // forgefmt: disable-next-item
            mstore(
                m,
                0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f
            )
            mstore(add(m, 0x20), nameHash)
            // `keccak256("1")`.
            // forgefmt: disable-next-item
            mstore(
                add(m, 0x40),
                0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6
            )
            mstore(add(m, 0x60), chainid())
            mstore(add(m, 0x80), address())
            result := keccak256(m, 0xa0)
        }
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                  INTERNAL MINT FUNCTIONS                   */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Mints `amount` tokens to `to`, increasing the total supply.
    ///
    /// Emits a {Transfer} event.
    function _mint(address to, uint256 amount) internal virtual {
        _beforeTokenTransfer(address(0), to, amount);
        /// @solidity memory-safe-assembly
        assembly {
            let totalSupplyBefore := sload(_TOTAL_SUPPLY_SLOT)
            let totalSupplyAfter := add(totalSupplyBefore, amount)
            // Revert if the total supply overflows.
            if lt(totalSupplyAfter, totalSupplyBefore) {
                mstore(0x00, 0xe5cfe957) // `TotalSupplyOverflow()`.
                revert(0x1c, 0x04)
            }
            // Store the updated total supply.
            sstore(_TOTAL_SUPPLY_SLOT, totalSupplyAfter)
            // Compute the balance slot and load its value.
            mstore(0x0c, _BALANCE_SLOT_SEED)
            mstore(0x00, to)
            let toBalanceSlot := keccak256(0x0c, 0x20)
            // Add and store the updated balance.
            sstore(toBalanceSlot, add(sload(toBalanceSlot), amount))
            // Emit the {Transfer} event.
            mstore(0x20, amount)
            log3(0x20, 0x20, _TRANSFER_EVENT_SIGNATURE, 0, shr(96, mload(0x0c)))
        }
        _afterTokenTransfer(address(0), to, amount);
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                  INTERNAL BURN FUNCTIONS                   */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Burns `amount` tokens from `from`, reducing the total supply.
    ///
    /// Emits a {Transfer} event.
    function _burn(address from, uint256 amount) internal virtual {
        _beforeTokenTransfer(from, address(0), amount);
        /// @solidity memory-safe-assembly
        assembly {
            // Compute the balance slot and load its value.
            mstore(0x0c, _BALANCE_SLOT_SEED)
            mstore(0x00, from)
            let fromBalanceSlot := keccak256(0x0c, 0x20)
            let fromBalance := sload(fromBalanceSlot)
            // Revert if insufficient balance.
            if gt(amount, fromBalance) {
                mstore(0x00, 0xf4d678b8) // `InsufficientBalance()`.
                revert(0x1c, 0x04)
            }
            // Subtract and store the updated balance.
            sstore(fromBalanceSlot, sub(fromBalance, amount))
            // Subtract and store the updated total supply.
            sstore(_TOTAL_SUPPLY_SLOT, sub(sload(_TOTAL_SUPPLY_SLOT), amount))
            // Emit the {Transfer} event.
            mstore(0x00, amount)
            log3(
                0x00,
                0x20,
                _TRANSFER_EVENT_SIGNATURE,
                shr(96, shl(96, from)),
                0
            )
        }
        _afterTokenTransfer(from, address(0), amount);
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                INTERNAL TRANSFER FUNCTIONS                 */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Moves `amount` of tokens from `from` to `to`.
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        _beforeTokenTransfer(from, to, amount);
        /// @solidity memory-safe-assembly
        assembly {
            let from_ := shl(96, from)
            // Compute the balance slot and load its value.
            mstore(0x0c, or(from_, _BALANCE_SLOT_SEED))
            let fromBalanceSlot := keccak256(0x0c, 0x20)
            let fromBalance := sload(fromBalanceSlot)
            // Revert if insufficient balance.
            if gt(amount, fromBalance) {
                mstore(0x00, 0xf4d678b8) // `InsufficientBalance()`.
                revert(0x1c, 0x04)
            }
            // Subtract and store the updated balance.
            sstore(fromBalanceSlot, sub(fromBalance, amount))
            // Compute the balance slot of `to`.
            mstore(0x00, to)
            let toBalanceSlot := keccak256(0x0c, 0x20)
            // Add and store the updated balance of `to`.
            // Will not overflow because the sum of all user balances
            // cannot exceed the maximum uint256 value.
            sstore(toBalanceSlot, add(sload(toBalanceSlot), amount))
            // Emit the {Transfer} event.
            mstore(0x20, amount)
            log3(
                0x20,
                0x20,
                _TRANSFER_EVENT_SIGNATURE,
                shr(96, from_),
                shr(96, mload(0x0c))
            )
        }
        _afterTokenTransfer(from, to, amount);
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                INTERNAL ALLOWANCE FUNCTIONS                */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Updates the allowance of `owner` for `spender` based on spent `amount`.
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        /// @solidity memory-safe-assembly
        assembly {
            // Compute the allowance slot and load its value.
            mstore(0x20, spender)
            mstore(0x0c, _ALLOWANCE_SLOT_SEED)
            mstore(0x00, owner)
            let allowanceSlot := keccak256(0x0c, 0x34)
            let allowance_ := sload(allowanceSlot)
            // If the allowance is not the maximum uint256 value.
            if iszero(eq(allowance_, not(0))) {
                // Revert if the amount to be transferred exceeds the allowance.
                if gt(amount, allowance_) {
                    mstore(0x00, 0x13be252b) // `InsufficientAllowance()`.
                    revert(0x1c, 0x04)
                }
                // Subtract and store the updated allowance.
                sstore(allowanceSlot, sub(allowance_, amount))
            }
        }
    }

    /// @dev Sets `amount` as the allowance of `spender` over the tokens of `owner`.
    ///
    /// Emits a {Approval} event.
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        /// @solidity memory-safe-assembly
        assembly {
            let owner_ := shl(96, owner)
            // Compute the allowance slot and store the amount.
            mstore(0x20, spender)
            mstore(0x0c, or(owner_, _ALLOWANCE_SLOT_SEED))
            sstore(keccak256(0x0c, 0x34), amount)
            // Emit the {Approval} event.
            mstore(0x00, amount)
            log3(
                0x00,
                0x20,
                _APPROVAL_EVENT_SIGNATURE,
                shr(96, owner_),
                shr(96, mload(0x2c))
            )
        }
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                     HOOKS TO OVERRIDE                      */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Hook that is called before any transfer of tokens.
    /// This includes minting and burning.
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /// @dev Hook that is called after any transfer of tokens.
    /// This includes minting and burning.
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

File 2 of 3: Owned.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Simple single owner authorization mixin.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Owned.sol)
abstract contract Owned {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

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

    /*//////////////////////////////////////////////////////////////
                            OWNERSHIP STORAGE
    //////////////////////////////////////////////////////////////*/

    address public owner;

    modifier onlyOwner() virtual {
        require(msg.sender == owner, "UNAUTHORIZED");

        _;
    }

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(address _owner) {
        owner = _owner;

        emit OwnershipTransferred(address(0), _owner);
    }

    /*//////////////////////////////////////////////////////////////
                             OWNERSHIP LOGIC
    //////////////////////////////////////////////////////////////*/

    function transferOwnership(address newOwner) public virtual onlyOwner {
        owner = newOwner;

        emit OwnershipTransferred(msg.sender, newOwner);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_totalSuply","type":"uint256"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_tax_receiver","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AllowanceOverflow","type":"error"},{"inputs":[],"name":"AllowanceUnderflow","type":"error"},{"inputs":[],"name":"InsufficientAllowance","type":"error"},{"inputs":[],"name":"InsufficientBalance","type":"error"},{"inputs":[],"name":"InvalidPermit","type":"error"},{"inputs":[],"name":"PermitExpired","type":"error"},{"inputs":[],"name":"TotalSupplyOverflow","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"TaxPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"startTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"TaxTimeSet","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MK677_PLUG","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newReceiver","type":"address"}],"name":"changeTaxReceiver","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":"difference","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"difference","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"paused","type":"bool"}],"name":"pauseTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"uint256","name":"_endTime","type":"uint256"}],"name":"setTaxTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxPct","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"taxFree","type":"bool"}],"name":"toggleNoTaxWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"}]

60806040523480156200001157600080fd5b5060405162001e9b38038062001e9b83398181016040528101906200003791906200048c565b81806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620000e682846200025c60201b60201c565b6001600560006101000a81548160ff021916908315150217905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001a342610e104262000197919062000517565b6200030460201b60201c565b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505062000613565b6200027060008383620003dd60201b60201c565b6805345cdf77eb68f44c5481810181811015620002955763e5cfe9576000526004601cfd5b806805345cdf77eb68f44c556387a211a2600c52836000526020600c2083815401815583602052600c5160601c60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050506200030060008383620003e260201b60201c565b5050565b804211156200034a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200034190620005b3565b60405180910390fd5b8082111562000390576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200038790620005b3565b60405180910390fd5b81600381905550806004819055507fd7f62931dff2cf837ae251521f45337c1b0e3e097bde1309f92fb35ecfecda038282604051620003d1929190620005e6565b60405180910390a15050565b505050565b505050565b600080fd5b6000819050919050565b6200040181620003ec565b81146200040d57600080fd5b50565b6000815190506200042181620003f6565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004548262000427565b9050919050565b620004668162000447565b81146200047257600080fd5b50565b60008151905062000486816200045b565b92915050565b600080600060608486031215620004a857620004a7620003e7565b5b6000620004b88682870162000410565b9350506020620004cb8682870162000475565b9250506040620004de8682870162000475565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200052482620003ec565b91506200053183620003ec565b92508282019050808211156200054c576200054b620004e8565b5b92915050565b600082825260208201905092915050565b7f6261642074696d652072616e6765000000000000000000000000000000000000600082015250565b60006200059b600e8362000552565b9150620005a88262000563565b602082019050919050565b60006020820190508181036000830152620005ce816200058c565b9050919050565b620005e081620003ec565b82525050565b6000604082019050620005fd6000830185620005d5565b6200060c6020830184620005d5565b9392505050565b61187880620006236000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063a457c2d711610097578063d4dc007011610071578063d4dc007014610464578063d505accf14610482578063dd62ed3e1461049e578063f2fde38b146104ce57610173565b8063a457c2d7146103e8578063a9059cbb14610418578063b0576a491461044857610173565b806370a082311461031057806378e97925146103405780637ecebe001461035e5780638814d5861461038e5780638da5cb5b146103ac57806395d89b41146103ca57610173565b8063313ce56711610130578063313ce5671461024c5780633197cbb61461026a57806333a4ea06146102885780633644e515146102a657806339509351146102c457806346c42c93146102f457610173565b806306fdde0314610178578063095ea7b3146101965780630bb8e103146101c657806318160ddd146101e257806323b872dd1461020057806330a3d72314610230575b600080fd5b6101806104ea565b60405161018d91906111b9565b60405180910390f35b6101b060048036038101906101ab9190611274565b610527565b6040516101bd91906112cf565b60405180910390f35b6101e060048036038101906101db9190611316565b61057b565b005b6101ea61065e565b6040516101f79190611352565b60405180910390f35b61021a6004803603810190610215919061136d565b610670565b60405161022791906112cf565b60405180910390f35b61024a600480360381019061024591906113c0565b610721565b005b6102546107f3565b6040516102619190611409565b60405180910390f35b6102726107fc565b60405161027f9190611352565b60405180910390f35b610290610802565b60405161029d9190611352565b60405180910390f35b6102ae610808565b6040516102bb919061143d565b60405180910390f35b6102de60048036038101906102d99190611274565b610889565b6040516102eb91906112cf565b60405180910390f35b61030e60048036038101906103099190611458565b6108fc565b005b61032a600480360381019061032591906113c0565b6109e5565b6040516103379190611352565b60405180910390f35b610348610a00565b6040516103559190611352565b60405180910390f35b610378600480360381019061037391906113c0565b610a06565b6040516103859190611352565b60405180910390f35b610396610a21565b6040516103a391906114a7565b60405180910390f35b6103b4610a47565b6040516103c191906114a7565b60405180910390f35b6103d2610a6b565b6040516103df91906111b9565b60405180910390f35b61040260048036038101906103fd9190611274565b610aa8565b60405161040f91906112cf565b60405180910390f35b610432600480360381019061042d9190611274565b610b1b565b60405161043f91906112cf565b60405180910390f35b610462600480360381019061045d91906114c2565b610b82565b005b61046c610c1e565b60405161047991906112cf565b60405180910390f35b61049c6004803603810190610497919061155a565b610c31565b005b6104b860048036038101906104b391906115fc565b610d60565b6040516104c59190611352565b60405180910390f35b6104e860048036038101906104e391906113c0565b610d80565b005b60606040518060400160405280600f81526020017f5369636b2043756e74204d6f6e65790000000000000000000000000000000000815250905090565b600082602052637f5e9f20600c5233600052816034600c205581600052602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560206000a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060090611688565b60405180910390fd5b8015600560006101000a81548160ff0219169083151502179055507fa32873ac8d5b14de8a004b83c19ee1a422f35a4da8b4f7c7cfba001f718116fc8160405161065391906112cf565b60405180910390a150565b60006805345cdf77eb68f44c54905090565b60008061067d8533610d60565b9050808311156106b9576040517f13be252b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106c58486610eab565b90506106dd868683876106d891906116d7565b610fa2565b60008111156107145761071386600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610fa2565b5b6001925050509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a690611688565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b60045481565b6101f481565b6000604051905060006108196104ea565b805190602001209050817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81528160208201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6604082015246606082015230608082015260a081209250505090565b600082602052637f5e9f20600c52336000526034600c208054838101818110156108bb5763f90670666000526004601cfd5b80835580600052602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560206000a35050506001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190611688565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006387a211a2600c52816000526020600c20549050919050565b60035481565b60006338377508600c52816000526020600c20549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600681526020017f53494b434e540000000000000000000000000000000000000000000000000000815250905090565b600082602052637f5e9f20600c52336000526034600c20805483811015610ad757638301ab386000526004601cfd5b83810380835580600052602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560206000a35050506001905092915050565b600080610b288385610eab565b9050610b4033858386610b3b91906116d7565b610fa2565b6000811115610b7757610b7633600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610fa2565b5b600191505092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0790611688565b60405180910390fd5b610c1a8282611033565b5050565b600560009054906101000a900460ff1681565b6000610c3b610808565b905060405185421115610c5657631a15a3cc6000526004601cfd5b8860601b60601c98508760601b60601c97506338377508600c52886000526020600c2080546001810182557f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528a60208401528960408401528860608401528060808401528760a08401526119016000528360205260c083206040526042601e206000528660ff1660205285604052846060526020806080600060015afa508a3d5114610d0c5763ddafbaef6000526004601cfd5b89637f5e9f2060a01b17604052886034602c2055898b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608701a38260405260006060525050505050505050505050565b600081602052637f5e9f20600c52826000526034600c2054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0590611688565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560009054906101000a900460ff168015610ecd5750610ecc611104565b5b8015610f235750600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610f795750600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610f9c576127106101f484610f8f919061170b565b610f99919061177c565b90505b92915050565b610fad83838361111f565b8260601b6387a211a28117600c526020600c20805480841115610fd85763f4d678b86000526004601cfd5b8381038255846000526020600c2084815401815584602052600c5160601c8460601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050505061102e838383611124565b505050565b80421115611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d906117f9565b60405180910390fd5b808211156110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b0906117f9565b60405180910390fd5b81600381905550806004819055507fd7f62931dff2cf837ae251521f45337c1b0e3e097bde1309f92fb35ecfecda0382826040516110f8929190611819565b60405180910390a15050565b6000600354421015801561111a57506004544211155b905090565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611163578082015181840152602081019050611148565b60008484015250505050565b6000601f19601f8301169050919050565b600061118b82611129565b6111958185611134565b93506111a5818560208601611145565b6111ae8161116f565b840191505092915050565b600060208201905081810360008301526111d38184611180565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061120b826111e0565b9050919050565b61121b81611200565b811461122657600080fd5b50565b60008135905061123881611212565b92915050565b6000819050919050565b6112518161123e565b811461125c57600080fd5b50565b60008135905061126e81611248565b92915050565b6000806040838503121561128b5761128a6111db565b5b600061129985828601611229565b92505060206112aa8582860161125f565b9150509250929050565b60008115159050919050565b6112c9816112b4565b82525050565b60006020820190506112e460008301846112c0565b92915050565b6112f3816112b4565b81146112fe57600080fd5b50565b600081359050611310816112ea565b92915050565b60006020828403121561132c5761132b6111db565b5b600061133a84828501611301565b91505092915050565b61134c8161123e565b82525050565b60006020820190506113676000830184611343565b92915050565b600080600060608486031215611386576113856111db565b5b600061139486828701611229565b93505060206113a586828701611229565b92505060406113b68682870161125f565b9150509250925092565b6000602082840312156113d6576113d56111db565b5b60006113e484828501611229565b91505092915050565b600060ff82169050919050565b611403816113ed565b82525050565b600060208201905061141e60008301846113fa565b92915050565b6000819050919050565b61143781611424565b82525050565b6000602082019050611452600083018461142e565b92915050565b6000806040838503121561146f5761146e6111db565b5b600061147d85828601611229565b925050602061148e85828601611301565b9150509250929050565b6114a181611200565b82525050565b60006020820190506114bc6000830184611498565b92915050565b600080604083850312156114d9576114d86111db565b5b60006114e78582860161125f565b92505060206114f88582860161125f565b9150509250929050565b61150b816113ed565b811461151657600080fd5b50565b60008135905061152881611502565b92915050565b61153781611424565b811461154257600080fd5b50565b6000813590506115548161152e565b92915050565b600080600080600080600060e0888a031215611579576115786111db565b5b60006115878a828b01611229565b97505060206115988a828b01611229565b96505060406115a98a828b0161125f565b95505060606115ba8a828b0161125f565b94505060806115cb8a828b01611519565b93505060a06115dc8a828b01611545565b92505060c06115ed8a828b01611545565b91505092959891949750929550565b60008060408385031215611613576116126111db565b5b600061162185828601611229565b925050602061163285828601611229565b9150509250929050565b7f554e415554484f52495a45440000000000000000000000000000000000000000600082015250565b6000611672600c83611134565b915061167d8261163c565b602082019050919050565b600060208201905081810360008301526116a181611665565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006116e28261123e565b91506116ed8361123e565b9250828203905081811115611705576117046116a8565b5b92915050565b60006117168261123e565b91506117218361123e565b925082820261172f8161123e565b91508282048414831517611746576117456116a8565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006117878261123e565b91506117928361123e565b9250826117a2576117a161174d565b5b828204905092915050565b7f6261642074696d652072616e6765000000000000000000000000000000000000600082015250565b60006117e3600e83611134565b91506117ee826117ad565b602082019050919050565b60006020820190508181036000830152611812816117d6565b9050919050565b600060408201905061182e6000830185611343565b61183b6020830184611343565b939250505056fea2646970667358221220ccec04343fe1c8913cdf22f8c0f4f81184af88bd096bbf4ff55232ab552ebfd564736f6c634300081200330000000000000000000000000000000000000009ce9f56010fd538dc28000000000000000000000000000000de28cb8da93c5db79cbf27829a944fef16067bd2000000000000000000000000b894ed78062adb5650c18e5cd9a9d0fea5772b40

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063a457c2d711610097578063d4dc007011610071578063d4dc007014610464578063d505accf14610482578063dd62ed3e1461049e578063f2fde38b146104ce57610173565b8063a457c2d7146103e8578063a9059cbb14610418578063b0576a491461044857610173565b806370a082311461031057806378e97925146103405780637ecebe001461035e5780638814d5861461038e5780638da5cb5b146103ac57806395d89b41146103ca57610173565b8063313ce56711610130578063313ce5671461024c5780633197cbb61461026a57806333a4ea06146102885780633644e515146102a657806339509351146102c457806346c42c93146102f457610173565b806306fdde0314610178578063095ea7b3146101965780630bb8e103146101c657806318160ddd146101e257806323b872dd1461020057806330a3d72314610230575b600080fd5b6101806104ea565b60405161018d91906111b9565b60405180910390f35b6101b060048036038101906101ab9190611274565b610527565b6040516101bd91906112cf565b60405180910390f35b6101e060048036038101906101db9190611316565b61057b565b005b6101ea61065e565b6040516101f79190611352565b60405180910390f35b61021a6004803603810190610215919061136d565b610670565b60405161022791906112cf565b60405180910390f35b61024a600480360381019061024591906113c0565b610721565b005b6102546107f3565b6040516102619190611409565b60405180910390f35b6102726107fc565b60405161027f9190611352565b60405180910390f35b610290610802565b60405161029d9190611352565b60405180910390f35b6102ae610808565b6040516102bb919061143d565b60405180910390f35b6102de60048036038101906102d99190611274565b610889565b6040516102eb91906112cf565b60405180910390f35b61030e60048036038101906103099190611458565b6108fc565b005b61032a600480360381019061032591906113c0565b6109e5565b6040516103379190611352565b60405180910390f35b610348610a00565b6040516103559190611352565b60405180910390f35b610378600480360381019061037391906113c0565b610a06565b6040516103859190611352565b60405180910390f35b610396610a21565b6040516103a391906114a7565b60405180910390f35b6103b4610a47565b6040516103c191906114a7565b60405180910390f35b6103d2610a6b565b6040516103df91906111b9565b60405180910390f35b61040260048036038101906103fd9190611274565b610aa8565b60405161040f91906112cf565b60405180910390f35b610432600480360381019061042d9190611274565b610b1b565b60405161043f91906112cf565b60405180910390f35b610462600480360381019061045d91906114c2565b610b82565b005b61046c610c1e565b60405161047991906112cf565b60405180910390f35b61049c6004803603810190610497919061155a565b610c31565b005b6104b860048036038101906104b391906115fc565b610d60565b6040516104c59190611352565b60405180910390f35b6104e860048036038101906104e391906113c0565b610d80565b005b60606040518060400160405280600f81526020017f5369636b2043756e74204d6f6e65790000000000000000000000000000000000815250905090565b600082602052637f5e9f20600c5233600052816034600c205581600052602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560206000a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060090611688565b60405180910390fd5b8015600560006101000a81548160ff0219169083151502179055507fa32873ac8d5b14de8a004b83c19ee1a422f35a4da8b4f7c7cfba001f718116fc8160405161065391906112cf565b60405180910390a150565b60006805345cdf77eb68f44c54905090565b60008061067d8533610d60565b9050808311156106b9576040517f13be252b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106c58486610eab565b90506106dd868683876106d891906116d7565b610fa2565b60008111156107145761071386600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610fa2565b5b6001925050509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a690611688565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b60045481565b6101f481565b6000604051905060006108196104ea565b805190602001209050817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81528160208201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6604082015246606082015230608082015260a081209250505090565b600082602052637f5e9f20600c52336000526034600c208054838101818110156108bb5763f90670666000526004601cfd5b80835580600052602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560206000a35050506001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190611688565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006387a211a2600c52816000526020600c20549050919050565b60035481565b60006338377508600c52816000526020600c20549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600681526020017f53494b434e540000000000000000000000000000000000000000000000000000815250905090565b600082602052637f5e9f20600c52336000526034600c20805483811015610ad757638301ab386000526004601cfd5b83810380835580600052602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560206000a35050506001905092915050565b600080610b288385610eab565b9050610b4033858386610b3b91906116d7565b610fa2565b6000811115610b7757610b7633600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610fa2565b5b600191505092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0790611688565b60405180910390fd5b610c1a8282611033565b5050565b600560009054906101000a900460ff1681565b6000610c3b610808565b905060405185421115610c5657631a15a3cc6000526004601cfd5b8860601b60601c98508760601b60601c97506338377508600c52886000526020600c2080546001810182557f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528a60208401528960408401528860608401528060808401528760a08401526119016000528360205260c083206040526042601e206000528660ff1660205285604052846060526020806080600060015afa508a3d5114610d0c5763ddafbaef6000526004601cfd5b89637f5e9f2060a01b17604052886034602c2055898b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608701a38260405260006060525050505050505050505050565b600081602052637f5e9f20600c52826000526034600c2054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0590611688565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560009054906101000a900460ff168015610ecd5750610ecc611104565b5b8015610f235750600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610f795750600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610f9c576127106101f484610f8f919061170b565b610f99919061177c565b90505b92915050565b610fad83838361111f565b8260601b6387a211a28117600c526020600c20805480841115610fd85763f4d678b86000526004601cfd5b8381038255846000526020600c2084815401815584602052600c5160601c8460601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050505061102e838383611124565b505050565b80421115611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d906117f9565b60405180910390fd5b808211156110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b0906117f9565b60405180910390fd5b81600381905550806004819055507fd7f62931dff2cf837ae251521f45337c1b0e3e097bde1309f92fb35ecfecda0382826040516110f8929190611819565b60405180910390a15050565b6000600354421015801561111a57506004544211155b905090565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611163578082015181840152602081019050611148565b60008484015250505050565b6000601f19601f8301169050919050565b600061118b82611129565b6111958185611134565b93506111a5818560208601611145565b6111ae8161116f565b840191505092915050565b600060208201905081810360008301526111d38184611180565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061120b826111e0565b9050919050565b61121b81611200565b811461122657600080fd5b50565b60008135905061123881611212565b92915050565b6000819050919050565b6112518161123e565b811461125c57600080fd5b50565b60008135905061126e81611248565b92915050565b6000806040838503121561128b5761128a6111db565b5b600061129985828601611229565b92505060206112aa8582860161125f565b9150509250929050565b60008115159050919050565b6112c9816112b4565b82525050565b60006020820190506112e460008301846112c0565b92915050565b6112f3816112b4565b81146112fe57600080fd5b50565b600081359050611310816112ea565b92915050565b60006020828403121561132c5761132b6111db565b5b600061133a84828501611301565b91505092915050565b61134c8161123e565b82525050565b60006020820190506113676000830184611343565b92915050565b600080600060608486031215611386576113856111db565b5b600061139486828701611229565b93505060206113a586828701611229565b92505060406113b68682870161125f565b9150509250925092565b6000602082840312156113d6576113d56111db565b5b60006113e484828501611229565b91505092915050565b600060ff82169050919050565b611403816113ed565b82525050565b600060208201905061141e60008301846113fa565b92915050565b6000819050919050565b61143781611424565b82525050565b6000602082019050611452600083018461142e565b92915050565b6000806040838503121561146f5761146e6111db565b5b600061147d85828601611229565b925050602061148e85828601611301565b9150509250929050565b6114a181611200565b82525050565b60006020820190506114bc6000830184611498565b92915050565b600080604083850312156114d9576114d86111db565b5b60006114e78582860161125f565b92505060206114f88582860161125f565b9150509250929050565b61150b816113ed565b811461151657600080fd5b50565b60008135905061152881611502565b92915050565b61153781611424565b811461154257600080fd5b50565b6000813590506115548161152e565b92915050565b600080600080600080600060e0888a031215611579576115786111db565b5b60006115878a828b01611229565b97505060206115988a828b01611229565b96505060406115a98a828b0161125f565b95505060606115ba8a828b0161125f565b94505060806115cb8a828b01611519565b93505060a06115dc8a828b01611545565b92505060c06115ed8a828b01611545565b91505092959891949750929550565b60008060408385031215611613576116126111db565b5b600061162185828601611229565b925050602061163285828601611229565b9150509250929050565b7f554e415554484f52495a45440000000000000000000000000000000000000000600082015250565b6000611672600c83611134565b915061167d8261163c565b602082019050919050565b600060208201905081810360008301526116a181611665565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006116e28261123e565b91506116ed8361123e565b9250828203905081811115611705576117046116a8565b5b92915050565b60006117168261123e565b91506117218361123e565b925082820261172f8161123e565b91508282048414831517611746576117456116a8565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006117878261123e565b91506117928361123e565b9250826117a2576117a161174d565b5b828204905092915050565b7f6261642074696d652072616e6765000000000000000000000000000000000000600082015250565b60006117e3600e83611134565b91506117ee826117ad565b602082019050919050565b60006020820190508181036000830152611812816117d6565b9050919050565b600060408201905061182e6000830185611343565b61183b6020830184611343565b939250505056fea2646970667358221220ccec04343fe1c8913cdf22f8c0f4f81184af88bd096bbf4ff55232ab552ebfd564736f6c63430008120033

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

0000000000000000000000000000000000000009ce9f56010fd538dc28000000000000000000000000000000de28cb8da93c5db79cbf27829a944fef16067bd2000000000000000000000000b894ed78062adb5650c18e5cd9a9d0fea5772b40

-----Decoded View---------------
Arg [0] : _totalSuply (uint256): 777000000000000000000000000000
Arg [1] : _owner (address): 0xDE28CB8Da93c5db79cBf27829a944FEF16067BD2
Arg [2] : _tax_receiver (address): 0xB894ED78062aDb5650C18e5CD9a9D0Fea5772b40

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000009ce9f56010fd538dc28000000
Arg [1] : 000000000000000000000000de28cb8da93c5db79cbf27829a944fef16067bd2
Arg [2] : 000000000000000000000000b894ed78062adb5650c18e5cd9a9d0fea5772b40


Deployed Bytecode Sourcemap

5966:5237:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7666:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6016:689:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9668:118:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4868:195:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9006:472:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10107:108;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4441:82:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6789:22:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6464:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17765:1154:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6837:1174;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9947:154:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5129:300:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6719:24:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14112:354:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6547:25:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;690:20:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7811:95:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8143:1151:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8266:334:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9792:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6870:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14650:3056:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5524:361;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1312:161:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7666:102:2;7712:13;7737:24;;;;;;;;;;;;;;;;;;;7666:102;:::o;6016:689:0:-;6112:4;6271:7;6265:4;6258:21;6305:20;6299:4;6292:34;6352:8;6346:4;6339:22;6404:6;6397:4;6391;6381:21;6374:37;6479:6;6473:4;6466:20;6648:4;6642:11;6638:2;6634:20;6608:8;6565:25;6543:4;6521;6499:169;6694:4;6687:11;;6016:689;;;;:::o;9668:118:2:-;778:5:1;;;;;;;;;;764:19;;:10;:19;;;756:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;9741:6:2::1;9740:7;9728:9;;:19;;;;;;;;;;;;;;;;;;9762:17;9772:6;9762:17;;;;;;:::i;:::-;;;;;;;;9668:118:::0;:::o;4868:195:0:-;4920:14;5028:18;5022:25;5012:35;;4868:195;:::o;9006:472:2:-;9125:4;9141:18;9162:27;9172:4;9178:10;9162:9;:27::i;:::-;9141:48;;9212:10;9203:6;:19;9199:55;;;9231:23;;;;;;;;;;;;;;9199:55;9265:17;9285:24;9298:6;9306:2;9285:12;:24::i;:::-;9265:44;;9319:39;9329:4;9335:2;9348:9;9339:6;:18;;;;:::i;:::-;9319:9;:39::i;:::-;9385:1;9373:9;:13;9369:82;;;9402:38;9412:4;9418:10;;;;;;;;;;;9430:9;9402;:38::i;:::-;9369:82;9467:4;9460:11;;;;9006:472;;;;;:::o;10107:108::-;778:5:1;;;;;;;;;;764:19;;:10;:19;;;756:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;10197:11:2::1;10184:10;;:24;;;;;;;;;;;;;;;;;;10107:108:::0;:::o;4441:82:0:-;4490:5;4514:2;4507:9;;4441:82;:::o;6789:22:2:-;;;;:::o;6464:36::-;6497:3;6464:36;:::o;17765:1154:0:-;17822:14;17930:4;17924:11;17914:21;;18081:16;18116:6;:4;:6::i;:::-;18100:24;;;;;;18081:43;;18209:6;18428:66;18409:1;18385:123;18542:8;18535:4;18532:1;18528:12;18521:30;18694:66;18671:4;18668:1;18664:12;18640:134;18808:9;18801:4;18798:1;18794:12;18787:31;18852:9;18845:4;18842:1;18838:12;18831:31;18898:4;18895:1;18885:18;18875:28;;18186:727;;17765:1154;:::o;6837:1174::-;6947:4;7104:7;7098:4;7091:21;7138:20;7132:4;7125:34;7185:8;7179:4;7172:22;7244:4;7238;7228:21;7291:13;7285:20;7398:10;7381:15;7377:32;7481:15;7465:14;7462:35;7459:156;;;7529:10;7523:4;7516:24;7596:4;7590;7583:18;7459:156;7694:14;7679:13;7672:37;7777:14;7771:4;7764:28;7954:4;7948:11;7944:2;7940:20;7914:8;7871:25;7849:4;7827;7805:169;7015:969;;;8000:4;7993:11;;6837:1174;;;;:::o;9947:154:2:-;778:5:1;;;;;;;;;;764:19;;:10;:19;;;756:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;10087:7:2::1;10059:16;:25;10076:7;10059:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;9947:154:::0;;:::o;5129:300:0:-;5206:14;5311:18;5305:4;5298:32;5356:5;5350:4;5343:19;5407:4;5401;5391:21;5385:28;5375:38;;5129:300;;;:::o;6719:24:2:-;;;;:::o;14112:354:0:-;14186:14;14349:17;14343:4;14336:31;14393:5;14387:4;14380:19;14444:4;14438;14428:21;14422:28;14412:38;;14112:354;;;:::o;6547:25:2:-;;;;;;;;;;;;;:::o;690:20:1:-;;;;;;;;;;;;:::o;7811:95:2:-;7859:13;7884:15;;;;;;;;;;;;;;;;;;;7811:95;:::o;8143:1151:0:-;8253:4;8410:7;8404:4;8397:21;8444:20;8438:4;8431:34;8491:8;8485:4;8478:22;8550:4;8544;8534:21;8597:13;8591:20;8688:10;8671:15;8668:31;8665:153;;;8731:10;8725:4;8718:24;8799:4;8793;8786:18;8665:153;8931:10;8914:15;8910:32;8977:14;8962:13;8955:37;9060:14;9054:4;9047:28;9237:4;9231:11;9227:2;9223:20;9197:8;9154:25;9132:4;9110;9088:169;8321:946;;;9283:4;9276:11;;8143:1151;;;;:::o;8266:334:2:-;8359:4;8375:17;8395:24;8408:6;8416:2;8395:12;:24::i;:::-;8375:44;;8429:45;8439:10;8451:2;8464:9;8455:6;:18;;;;:::i;:::-;8429:9;:45::i;:::-;8501:1;8489:9;:13;8485:88;;;8518:44;8528:10;8540;;;;;;;;;;;8552:9;8518;:44::i;:::-;8485:88;8589:4;8582:11;;;8266:334;;;;:::o;9792:149::-;778:5:1;;;;;;;;;;764:19;;:10;:19;;;756:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;9901:33:2::1;9913:10;9925:8;9901:11;:33::i;:::-;9792:149:::0;;:::o;6870:21::-;;;;;;;;;;;;;:::o;14650:3056:0:-;14849:23;14875:18;:16;:18::i;:::-;14849:44;;15029:4;15023:11;15136:8;15123:11;15120:25;15117:142;;;15177:10;15171:4;15164:24;15240:4;15234;15227:18;15117:142;15337:5;15333:2;15329:14;15325:2;15321:23;15312:32;;15384:7;15380:2;15376:16;15372:2;15368:25;15357:36;;15477:17;15471:4;15464:31;15521:5;15515:4;15508:19;15573:4;15567;15557:21;15615:9;15609:16;15726:1;15714:10;15710:18;15699:9;15692:37;15981:66;15962:1;15938:123;16095:5;16088:4;16085:1;16081:12;16074:27;16135:7;16128:4;16125:1;16121:12;16114:29;16177:5;16170:4;16167:1;16163:12;16156:27;16217:10;16210:4;16207:1;16203:12;16196:32;16262:8;16255:4;16252:1;16248:12;16241:30;16333:6;16330:1;16323:17;16366:15;16360:4;16353:29;16421:4;16418:1;16408:18;16402:4;16395:32;16513:4;16507;16497:21;16494:1;16487:32;16555:1;16549:4;16545:12;16539:4;16532:26;16584:1;16578:4;16571:15;16612:1;16606:4;16599:15;16667:4;16661;16655;16652:1;16649;16642:5;16631:41;16627:46;17092:5;17073:16;17067:23;17064:34;17054:159;;17131:10;17125:4;17118:24;17194:4;17188;17181:18;17054:159;17389:7;17366:20;17361:3;17357:30;17354:43;17348:4;17341:57;17441:5;17434:4;17428;17418:21;17411:36;17561:7;17554:5;17527:25;17521:4;17514;17511:1;17507:12;17502:67;17595:1;17589:4;17582:15;17659:1;17653:4;17646:15;14955:2745;;;;14650:3056;;;;;;;:::o;5524:361::-;5626:14;5731:7;5725:4;5718:21;5765:20;5759:4;5752:34;5812:5;5806:4;5799:19;5863:4;5857;5847:21;5841:28;5831:38;;5524:361;;;;:::o;1312:161:1:-;778:5;;;;;;;;;;764:19;;:10;:19;;;756:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;1400:8:::1;1392:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;1457:8;1424:42;;1445:10;1424:42;;;;;;;;;;;;1312:161:::0;:::o;10861:340:2:-;10956:17;11002:9;;;;;;;;;;;:38;;;;;11027:13;:11;:13::i;:::-;11002:38;:83;;;;;11057:16;:28;11074:10;11057:28;;;;;;;;;;;;;;;;;;;;;;;;;11056:29;11002:83;:120;;;;;11102:16;:20;11119:2;11102:20;;;;;;;;;;;;;;;;;;;;;;;;;11101:21;11002:120;10985:210;;;11179:5;6497:3;11160:6;:15;;;;:::i;:::-;11159:25;;;;:::i;:::-;11147:37;;10985:210;10861:340;;;;:::o;22462:1520:0:-;22580:38;22601:4;22607:2;22611:6;22580:20;:38::i;:::-;22715:4;22711:2;22707:13;22816:18;22809:5;22806:29;22800:4;22793:43;22888:4;22882;22872:21;22931:15;22925:22;23021:11;23013:6;23010:23;23007:146;;;23065:10;23059:4;23052:24;23134:4;23128;23121:18;23007:146;23262:6;23249:11;23245:24;23228:15;23221:49;23345:2;23339:4;23332:16;23398:4;23392;23382:21;23648:6;23632:13;23626:20;23622:33;23607:13;23600:56;23724:6;23718:4;23711:20;23899:4;23893:11;23889:2;23885:20;23861:5;23857:2;23853:14;23810:25;23788:4;23766;23744:175;22680:1249;;;;23938:37;23958:4;23964:2;23968:6;23938:19;:37::i;:::-;22462:1520;;;:::o;10404:311:2:-;10504:8;10486:15;:26;10482:56;;;10514:24;;;;;;;;;;:::i;:::-;;;;;;;;10482:56;10565:8;10552:10;:21;10548:51;;;10575:24;;;;;;;;;;:::i;:::-;;;;;;;;10548:51;10622:10;10610:9;:22;;;;10652:8;10642:7;:18;;;;10676:32;10687:10;10699:8;10676:32;;;;;;;:::i;:::-;;;;;;;;10404:311;;:::o;10721:134::-;10767:4;10809:9;;10790:15;:28;;:58;;;;;10841:7;;10822:15;:26;;10790:58;10783:65;;10721:134;:::o;26578:121:0:-;;;;:::o;26811:120::-;;;;:::o;7:99:3:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:118::-;4123:24;4141:5;4123:24;:::i;:::-;4118:3;4111:37;4036:118;;:::o;4160:222::-;4253:4;4291:2;4280:9;4276:18;4268:26;;4304:71;4372:1;4361:9;4357:17;4348:6;4304:71;:::i;:::-;4160:222;;;;:::o;4388:619::-;4465:6;4473;4481;4530:2;4518:9;4509:7;4505:23;4501:32;4498:119;;;4536:79;;:::i;:::-;4498:119;4656:1;4681:53;4726:7;4717:6;4706:9;4702:22;4681:53;:::i;:::-;4671:63;;4627:117;4783:2;4809:53;4854:7;4845:6;4834:9;4830:22;4809:53;:::i;:::-;4799:63;;4754:118;4911:2;4937:53;4982:7;4973:6;4962:9;4958:22;4937:53;:::i;:::-;4927:63;;4882:118;4388:619;;;;;:::o;5013:329::-;5072:6;5121:2;5109:9;5100:7;5096:23;5092:32;5089:119;;;5127:79;;:::i;:::-;5089:119;5247:1;5272:53;5317:7;5308:6;5297:9;5293:22;5272:53;:::i;:::-;5262:63;;5218:117;5013:329;;;;:::o;5348:86::-;5383:7;5423:4;5416:5;5412:16;5401:27;;5348:86;;;:::o;5440:112::-;5523:22;5539:5;5523:22;:::i;:::-;5518:3;5511:35;5440:112;;:::o;5558:214::-;5647:4;5685:2;5674:9;5670:18;5662:26;;5698:67;5762:1;5751:9;5747:17;5738:6;5698:67;:::i;:::-;5558:214;;;;:::o;5778:77::-;5815:7;5844:5;5833:16;;5778:77;;;:::o;5861:118::-;5948:24;5966:5;5948:24;:::i;:::-;5943:3;5936:37;5861:118;;:::o;5985:222::-;6078:4;6116:2;6105:9;6101:18;6093:26;;6129:71;6197:1;6186:9;6182:17;6173:6;6129:71;:::i;:::-;5985:222;;;;:::o;6213:468::-;6278:6;6286;6335:2;6323:9;6314:7;6310:23;6306:32;6303:119;;;6341:79;;:::i;:::-;6303:119;6461:1;6486:53;6531:7;6522:6;6511:9;6507:22;6486:53;:::i;:::-;6476:63;;6432:117;6588:2;6614:50;6656:7;6647:6;6636:9;6632:22;6614:50;:::i;:::-;6604:60;;6559:115;6213:468;;;;;:::o;6687:118::-;6774:24;6792:5;6774:24;:::i;:::-;6769:3;6762:37;6687:118;;:::o;6811:222::-;6904:4;6942:2;6931:9;6927:18;6919:26;;6955:71;7023:1;7012:9;7008:17;6999:6;6955:71;:::i;:::-;6811:222;;;;:::o;7039:474::-;7107:6;7115;7164:2;7152:9;7143:7;7139:23;7135:32;7132:119;;;7170:79;;:::i;:::-;7132:119;7290:1;7315:53;7360:7;7351:6;7340:9;7336:22;7315:53;:::i;:::-;7305:63;;7261:117;7417:2;7443:53;7488:7;7479:6;7468:9;7464:22;7443:53;:::i;:::-;7433:63;;7388:118;7039:474;;;;;:::o;7519:118::-;7590:22;7606:5;7590:22;:::i;:::-;7583:5;7580:33;7570:61;;7627:1;7624;7617:12;7570:61;7519:118;:::o;7643:135::-;7687:5;7725:6;7712:20;7703:29;;7741:31;7766:5;7741:31;:::i;:::-;7643:135;;;;:::o;7784:122::-;7857:24;7875:5;7857:24;:::i;:::-;7850:5;7847:35;7837:63;;7896:1;7893;7886:12;7837:63;7784:122;:::o;7912:139::-;7958:5;7996:6;7983:20;7974:29;;8012:33;8039:5;8012:33;:::i;:::-;7912:139;;;;:::o;8057:1199::-;8168:6;8176;8184;8192;8200;8208;8216;8265:3;8253:9;8244:7;8240:23;8236:33;8233:120;;;8272:79;;:::i;:::-;8233:120;8392:1;8417:53;8462:7;8453:6;8442:9;8438:22;8417:53;:::i;:::-;8407:63;;8363:117;8519:2;8545:53;8590:7;8581:6;8570:9;8566:22;8545:53;:::i;:::-;8535:63;;8490:118;8647:2;8673:53;8718:7;8709:6;8698:9;8694:22;8673:53;:::i;:::-;8663:63;;8618:118;8775:2;8801:53;8846:7;8837:6;8826:9;8822:22;8801:53;:::i;:::-;8791:63;;8746:118;8903:3;8930:51;8973:7;8964:6;8953:9;8949:22;8930:51;:::i;:::-;8920:61;;8874:117;9030:3;9057:53;9102:7;9093:6;9082:9;9078:22;9057:53;:::i;:::-;9047:63;;9001:119;9159:3;9186:53;9231:7;9222:6;9211:9;9207:22;9186:53;:::i;:::-;9176:63;;9130:119;8057:1199;;;;;;;;;;:::o;9262:474::-;9330:6;9338;9387:2;9375:9;9366:7;9362:23;9358:32;9355:119;;;9393:79;;:::i;:::-;9355:119;9513:1;9538:53;9583:7;9574:6;9563:9;9559:22;9538:53;:::i;:::-;9528:63;;9484:117;9640:2;9666:53;9711:7;9702:6;9691:9;9687:22;9666:53;:::i;:::-;9656:63;;9611:118;9262:474;;;;;:::o;9742:162::-;9882:14;9878:1;9870:6;9866:14;9859:38;9742:162;:::o;9910:366::-;10052:3;10073:67;10137:2;10132:3;10073:67;:::i;:::-;10066:74;;10149:93;10238:3;10149:93;:::i;:::-;10267:2;10262:3;10258:12;10251:19;;9910:366;;;:::o;10282:419::-;10448:4;10486:2;10475:9;10471:18;10463:26;;10535:9;10529:4;10525:20;10521:1;10510:9;10506:17;10499:47;10563:131;10689:4;10563:131;:::i;:::-;10555:139;;10282:419;;;:::o;10707:180::-;10755:77;10752:1;10745:88;10852:4;10849:1;10842:15;10876:4;10873:1;10866:15;10893:194;10933:4;10953:20;10971:1;10953:20;:::i;:::-;10948:25;;10987:20;11005:1;10987:20;:::i;:::-;10982:25;;11031:1;11028;11024:9;11016:17;;11055:1;11049:4;11046:11;11043:37;;;11060:18;;:::i;:::-;11043:37;10893:194;;;;:::o;11093:410::-;11133:7;11156:20;11174:1;11156:20;:::i;:::-;11151:25;;11190:20;11208:1;11190:20;:::i;:::-;11185:25;;11245:1;11242;11238:9;11267:30;11285:11;11267:30;:::i;:::-;11256:41;;11446:1;11437:7;11433:15;11430:1;11427:22;11407:1;11400:9;11380:83;11357:139;;11476:18;;:::i;:::-;11357:139;11141:362;11093:410;;;;:::o;11509:180::-;11557:77;11554:1;11547:88;11654:4;11651:1;11644:15;11678:4;11675:1;11668:15;11695:185;11735:1;11752:20;11770:1;11752:20;:::i;:::-;11747:25;;11786:20;11804:1;11786:20;:::i;:::-;11781:25;;11825:1;11815:35;;11830:18;;:::i;:::-;11815:35;11872:1;11869;11865:9;11860:14;;11695:185;;;;:::o;11886:164::-;12026:16;12022:1;12014:6;12010:14;12003:40;11886:164;:::o;12056:366::-;12198:3;12219:67;12283:2;12278:3;12219:67;:::i;:::-;12212:74;;12295:93;12384:3;12295:93;:::i;:::-;12413:2;12408:3;12404:12;12397:19;;12056:366;;;:::o;12428:419::-;12594:4;12632:2;12621:9;12617:18;12609:26;;12681:9;12675:4;12671:20;12667:1;12656:9;12652:17;12645:47;12709:131;12835:4;12709:131;:::i;:::-;12701:139;;12428:419;;;:::o;12853:332::-;12974:4;13012:2;13001:9;12997:18;12989:26;;13025:71;13093:1;13082:9;13078:17;13069:6;13025:71;:::i;:::-;13106:72;13174:2;13163:9;13159:18;13150:6;13106:72;:::i;:::-;12853:332;;;;;:::o

Swarm Source

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