ETH Price: $2,365.05 (+0.60%)

Token

veDUCK (veDUCK)
 

Overview

Max Total Supply

63,152,704.275042394990880175 veDUCK

Holders

0

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
Vyper_contract

Compiler Version
vyper:0.2.15

Optimization Enabled:
N/A

Other Settings:
MIT license

Contract Source Code (Vyper language format)

# @version 0.2.15
"""
@title Voting Escrow
@author Curve Finance
@license MIT
@notice Votes have a weight depending on time, so that users are
        committed to the future of (whatever they are voting for)
@dev Vote weight decays linearly over time. Lock time cannot be
     more than `MAXTIME` (4 years).
"""

# Voting escrow to have time-weighted votes
# Votes have a weight depending on time, so that users are committed
# to the future of (whatever they are voting for).
# The weight in this implementation is linear, and lock cannot be more than maxtime:
# w ^
# 1 +        /
#   |      /
#   |    /
#   |  /
#   |/
# 0 +--------+------> time
#       maxtime (4 years?)

struct Point:
    bias: int128
    slope: int128  # - dweight / dt
    ts: uint256
    blk: uint256  # block
# We cannot really do block numbers per se b/c slope is per time, not per block
# and per block could be fairly bad b/c Ethereum changes blocktimes.
# What we can do is to extrapolate ***At functions

struct LockedBalance:
    amount: int128
    end: uint256


interface ERC20:
    def decimals() -> uint256: view
    def name() -> String[64]: view
    def symbol() -> String[32]: view
    def transfer(to: address, amount: uint256) -> bool: nonpayable
    def transferFrom(spender: address, to: address, amount: uint256) -> bool: nonpayable


# Interface for checking whether address belongs to a whitelisted
# type of a smart wallet.
# When new types are added - the whole contract is changed
# The check() method is modifying to be able to use caching
# for individual wallet addresses
interface SmartWalletChecker:
    def check(addr: address) -> bool: nonpayable

DEPOSIT_FOR_TYPE: constant(int128) = 0
CREATE_LOCK_TYPE: constant(int128) = 1
INCREASE_LOCK_AMOUNT: constant(int128) = 2
INCREASE_UNLOCK_TIME: constant(int128) = 3


event CommitOwnership:
    admin: address

event ApplyOwnership:
    admin: address

event Deposit:
    provider: indexed(address)
    value: uint256
    locktime: indexed(uint256)
    type: int128
    ts: uint256

event Withdraw:
    provider: indexed(address)
    value: uint256
    ts: uint256

event Supply:
    prevSupply: uint256
    supply: uint256


WEEK: constant(uint256) = 7 * 86400  # all future times are rounded by week
MAXTIME: constant(uint256) = 4 * 365 * 86400  # 4 years
MULTIPLIER: constant(uint256) = 10 ** 18

token: public(address)
supply: public(uint256)

locked: public(HashMap[address, LockedBalance])

epoch: public(uint256)
point_history: public(Point[100000000000000000000000000000])  # epoch -> unsigned point
user_point_history: public(HashMap[address, Point[1000000000]])  # user -> Point[user_epoch]
user_point_epoch: public(HashMap[address, uint256])
slope_changes: public(HashMap[uint256, int128])  # time -> signed slope change

# Aragon's view methods for compatibility
controller: public(address)
transfersEnabled: public(bool)

name: public(String[64])
symbol: public(String[32])
version: public(String[32])
decimals: public(uint256)

# Checker for whitelisted (smart contract) wallets which are allowed to deposit
# The goal is to prevent tokenizing the escrow
future_smart_wallet_checker: public(address)
smart_wallet_checker: public(address)

admin: public(address)  # Can and will be a smart contract
future_admin: public(address)


@external
def __init__(token_addr: address, _name: String[64], _symbol: String[32], _version: String[32]):
    """
    @notice Contract constructor
    @param token_addr `ERC20CRV` token address
    @param _name Token name
    @param _symbol Token symbol
    @param _version Contract version - required for Aragon compatibility
    """
    self.admin = msg.sender
    self.token = token_addr
    self.point_history[0].blk = block.number
    self.point_history[0].ts = block.timestamp
    self.controller = msg.sender
    self.transfersEnabled = True

    _decimals: uint256 = ERC20(token_addr).decimals()
    assert _decimals <= 255
    self.decimals = _decimals

    self.name = _name
    self.symbol = _symbol
    self.version = _version


@external
def commit_transfer_ownership(addr: address):
    """
    @notice Transfer ownership of VotingEscrow contract to `addr`
    @param addr Address to have ownership transferred to
    """
    assert msg.sender == self.admin  # dev: admin only
    self.future_admin = addr
    log CommitOwnership(addr)


@external
def apply_transfer_ownership():
    """
    @notice Apply ownership transfer
    """
    assert msg.sender == self.admin  # dev: admin only
    _admin: address = self.future_admin
    assert _admin != ZERO_ADDRESS  # dev: admin not set
    self.admin = _admin
    log ApplyOwnership(_admin)


@external
def commit_smart_wallet_checker(addr: address):
    """
    @notice Set an external contract to check for approved smart contract wallets
    @param addr Address of Smart contract checker
    """
    assert msg.sender == self.admin
    self.future_smart_wallet_checker = addr


@external
def apply_smart_wallet_checker():
    """
    @notice Apply setting external contract to check approved smart contract wallets
    """
    assert msg.sender == self.admin
    self.smart_wallet_checker = self.future_smart_wallet_checker


@internal
def assert_not_contract(addr: address):
    """
    @notice Check if the call is from a whitelisted smart contract, revert if not
    @param addr Address to be checked
    """
    if addr != tx.origin:
        checker: address = self.smart_wallet_checker
        if checker != ZERO_ADDRESS:
            if SmartWalletChecker(checker).check(addr):
                return
        raise "Smart contract depositors not allowed"


@external
@view
def get_last_user_slope(addr: address) -> int128:
    """
    @notice Get the most recently recorded rate of voting power decrease for `addr`
    @param addr Address of the user wallet
    @return Value of the slope
    """
    uepoch: uint256 = self.user_point_epoch[addr]
    return self.user_point_history[addr][uepoch].slope


@external
@view
def user_point_history__ts(_addr: address, _idx: uint256) -> uint256:
    """
    @notice Get the timestamp for checkpoint `_idx` for `_addr`
    @param _addr User wallet address
    @param _idx User epoch number
    @return Epoch time of the checkpoint
    """
    return self.user_point_history[_addr][_idx].ts


@external
@view
def locked__end(_addr: address) -> uint256:
    """
    @notice Get timestamp when `_addr`'s lock finishes
    @param _addr User wallet
    @return Epoch time of the lock end
    """
    return self.locked[_addr].end


@internal
def _checkpoint(addr: address, old_locked: LockedBalance, new_locked: LockedBalance):
    """
    @notice Record global and per-user data to checkpoint
    @param addr User's wallet address. No user checkpoint if 0x0
    @param old_locked Pevious locked amount / end lock time for the user
    @param new_locked New locked amount / end lock time for the user
    """
    u_old: Point = empty(Point)
    u_new: Point = empty(Point)
    old_dslope: int128 = 0
    new_dslope: int128 = 0
    _epoch: uint256 = self.epoch

    if addr != ZERO_ADDRESS:
        # Calculate slopes and biases
        # Kept at zero when they have to
        if old_locked.end > block.timestamp and old_locked.amount > 0:
            u_old.slope = old_locked.amount / MAXTIME
            u_old.bias = u_old.slope * convert(old_locked.end - block.timestamp, int128)
        if new_locked.end > block.timestamp and new_locked.amount > 0:
            u_new.slope = new_locked.amount / MAXTIME
            u_new.bias = u_new.slope * convert(new_locked.end - block.timestamp, int128)

        # Read values of scheduled changes in the slope
        # old_locked.end can be in the past and in the future
        # new_locked.end can ONLY by in the FUTURE unless everything expired: than zeros
        old_dslope = self.slope_changes[old_locked.end]
        if new_locked.end != 0:
            if new_locked.end == old_locked.end:
                new_dslope = old_dslope
            else:
                new_dslope = self.slope_changes[new_locked.end]

    last_point: Point = Point({bias: 0, slope: 0, ts: block.timestamp, blk: block.number})
    if _epoch > 0:
        last_point = self.point_history[_epoch]
    last_checkpoint: uint256 = last_point.ts
    # initial_last_point is used for extrapolation to calculate block number
    # (approximately, for *At methods) and save them
    # as we cannot figure that out exactly from inside the contract
    initial_last_point: Point = last_point
    block_slope: uint256 = 0  # dblock/dt
    if block.timestamp > last_point.ts:
        block_slope = MULTIPLIER * (block.number - last_point.blk) / (block.timestamp - last_point.ts)
    # If last point is already recorded in this block, slope=0
    # But that's ok b/c we know the block in such case

    # Go over weeks to fill history and calculate what the current point is
    t_i: uint256 = (last_checkpoint / WEEK) * WEEK
    for i in range(255):

        # Hopefully it won't happen that this won't get used in 5 years!
        # If it does, users will be able to withdraw but vote weight will be broken
        t_i += WEEK
        d_slope: int128 = 0
        if t_i > block.timestamp:
            t_i = block.timestamp
        else:
            d_slope = self.slope_changes[t_i]
        last_point.bias -= last_point.slope * convert(t_i - last_checkpoint, int128)
        last_point.slope += d_slope
        if last_point.bias < 0:  # This can happen
            last_point.bias = 0
        if last_point.slope < 0:  # This cannot happen - just in case
            last_point.slope = 0
        last_checkpoint = t_i
        last_point.ts = t_i
        last_point.blk = initial_last_point.blk + block_slope * (t_i - initial_last_point.ts) / MULTIPLIER
        _epoch += 1
        if t_i == block.timestamp:
            last_point.blk = block.number
            break
        else:
            self.point_history[_epoch] = last_point

    self.epoch = _epoch
    # Now point_history is filled until t=now

    if addr != ZERO_ADDRESS:
        # If last point was in this block, the slope change has been applied already
        # But in such case we have 0 slope(s)
        last_point.slope += (u_new.slope - u_old.slope)
        last_point.bias += (u_new.bias - u_old.bias)
        if last_point.slope < 0:
            last_point.slope = 0
        if last_point.bias < 0:
            last_point.bias = 0

    # Record the changed point into history
    self.point_history[_epoch] = last_point

    if addr != ZERO_ADDRESS:
        # Schedule the slope changes (slope is going down)
        # We subtract new_user_slope from [new_locked.end]
        # and add old_user_slope to [old_locked.end]
        if old_locked.end > block.timestamp:
            # old_dslope was <something> - u_old.slope, so we cancel that
            old_dslope += u_old.slope
            if new_locked.end == old_locked.end:
                old_dslope -= u_new.slope  # It was a new deposit, not extension
            self.slope_changes[old_locked.end] = old_dslope

        if new_locked.end > block.timestamp:
            if new_locked.end > old_locked.end:
                new_dslope -= u_new.slope  # old slope disappeared at this point
                self.slope_changes[new_locked.end] = new_dslope
            # else: we recorded it already in old_dslope

        # Now handle user history
        user_epoch: uint256 = self.user_point_epoch[addr] + 1

        self.user_point_epoch[addr] = user_epoch
        u_new.ts = block.timestamp
        u_new.blk = block.number
        self.user_point_history[addr][user_epoch] = u_new


@internal
def _deposit_for(_from: address, _addr: address, _value: uint256, unlock_time: uint256, locked_balance: LockedBalance, type: int128):
    """
    @notice Deposit and lock tokens for a user
    @param _addr User's wallet address
    @param _value Amount to deposit
    @param unlock_time New time when to unlock the tokens, or 0 if unchanged
    @param locked_balance Previous locked amount / timestamp
    """
    _locked: LockedBalance = locked_balance
    supply_before: uint256 = self.supply

    self.supply = supply_before + _value
    old_locked: LockedBalance = _locked
    # Adding to existing lock, or if a lock is expired - creating a new one
    _locked.amount += convert(_value, int128)
    if unlock_time != 0:
        _locked.end = unlock_time
    self.locked[_addr] = _locked

    # Possibilities:
    # Both old_locked.end could be current or expired (>/< block.timestamp)
    # value == 0 (extend lock) or value > 0 (add to lock or extend lock)
    # _locked.end > block.timestamp (always)
    self._checkpoint(_addr, old_locked, _locked)

    if _value != 0:
        assert ERC20(self.token).transferFrom(_from, self, _value)

    log Deposit(_addr, _value, _locked.end, type, block.timestamp)
    log Supply(supply_before, supply_before + _value)


@external
def checkpoint():
    """
    @notice Record global data to checkpoint
    """
    self._checkpoint(ZERO_ADDRESS, empty(LockedBalance), empty(LockedBalance))


@external
@nonreentrant('lock')
def deposit_for(_addr: address, _value: uint256):
    """
    @notice Deposit `_value` tokens for `_addr` and add to the lock
    @dev Anyone (even a smart contract) can deposit for someone else, but
         cannot extend their locktime and deposit for a brand new user
    @param _addr User's wallet address
    @param _value Amount to add to user's lock
    """
    _locked: LockedBalance = self.locked[_addr]

    assert _value > 0  # dev: need non-zero value
    assert _locked.amount > 0, "No existing lock found"
    assert _locked.end > block.timestamp, "Cannot add to expired lock. Withdraw"

    self._deposit_for(msg.sender, _addr, _value, 0, self.locked[_addr], DEPOSIT_FOR_TYPE)


@external
@nonreentrant('lock')
def create_lock(_value: uint256, _unlock_time: uint256):
    """
    @notice Deposit `_value` tokens for `msg.sender` and lock until `_unlock_time`
    @param _value Amount to deposit
    @param _unlock_time Epoch time when tokens unlock, rounded down to whole weeks
    """
    self.assert_not_contract(msg.sender)
    unlock_time: uint256 = (_unlock_time / WEEK) * WEEK  # Locktime is rounded down to weeks
    _locked: LockedBalance = self.locked[msg.sender]

    assert _value > 0  # dev: need non-zero value
    assert _locked.amount == 0, "Withdraw old tokens first"
    assert unlock_time > block.timestamp, "Can only lock until time in the future"
    assert unlock_time <= block.timestamp + MAXTIME, "Voting lock can be 4 years max"

    self._deposit_for(msg.sender, msg.sender, _value, unlock_time, _locked, CREATE_LOCK_TYPE)


@external
@nonreentrant('lock')
def increase_amount(_value: uint256):
    """
    @notice Deposit `_value` additional tokens for `msg.sender`
            without modifying the unlock time
    @param _value Amount of tokens to deposit and add to the lock
    """
    self.assert_not_contract(msg.sender)
    _locked: LockedBalance = self.locked[msg.sender]

    assert _value > 0  # dev: need non-zero value
    assert _locked.amount > 0, "No existing lock found"
    assert _locked.end > block.timestamp, "Cannot add to expired lock. Withdraw"

    self._deposit_for(msg.sender, msg.sender, _value, 0, _locked, INCREASE_LOCK_AMOUNT)


@external
@nonreentrant('lock')
def increase_unlock_time(_unlock_time: uint256):
    """
    @notice Extend the unlock time for `msg.sender` to `_unlock_time`
    @param _unlock_time New epoch time for unlocking
    """
    self.assert_not_contract(msg.sender)
    _locked: LockedBalance = self.locked[msg.sender]
    unlock_time: uint256 = (_unlock_time / WEEK) * WEEK  # Locktime is rounded down to weeks

    assert _locked.end > block.timestamp, "Lock expired"
    assert _locked.amount > 0, "Nothing is locked"
    assert unlock_time > _locked.end, "Can only increase lock duration"
    assert unlock_time <= block.timestamp + MAXTIME, "Voting lock can be 4 years max"

    self._deposit_for(msg.sender, msg.sender, 0, unlock_time, _locked, INCREASE_UNLOCK_TIME)


@external
@nonreentrant('lock')
def withdraw():
    """
    @notice Withdraw all tokens for `msg.sender`
    @dev Only possible if the lock has expired
    """
    _locked: LockedBalance = self.locked[msg.sender]
    assert block.timestamp >= _locked.end, "The lock didn't expire"
    value: uint256 = convert(_locked.amount, uint256)

    old_locked: LockedBalance = _locked
    _locked.end = 0
    _locked.amount = 0
    self.locked[msg.sender] = _locked
    supply_before: uint256 = self.supply
    self.supply = supply_before - value

    # old_locked can have either expired <= timestamp or zero end
    # _locked has only 0 end
    # Both can have >= 0 amount
    self._checkpoint(msg.sender, old_locked, _locked)

    assert ERC20(self.token).transfer(msg.sender, value)

    log Withdraw(msg.sender, value, block.timestamp)
    log Supply(supply_before, supply_before - value)


# The following ERC20/minime-compatible methods are not real balanceOf and supply!
# They measure the weights for the purpose of voting, so they don't represent
# real coins.

@internal
@view
def find_block_epoch(_block: uint256, max_epoch: uint256) -> uint256:
    """
    @notice Binary search to estimate timestamp for block number
    @param _block Block to find
    @param max_epoch Don't go beyond this epoch
    @return Approximate timestamp for block
    """
    # Binary search
    _min: uint256 = 0
    _max: uint256 = max_epoch
    for i in range(128):  # Will be always enough for 128-bit numbers
        if _min >= _max:
            break
        _mid: uint256 = (_min + _max + 1) / 2
        if self.point_history[_mid].blk <= _block:
            _min = _mid
        else:
            _max = _mid - 1
    return _min


@external
@view
def balanceOf(addr: address, _t: uint256 = block.timestamp) -> uint256:
    """
    @notice Get the current voting power for `msg.sender`
    @dev Adheres to the ERC20 `balanceOf` interface for Aragon compatibility
    @param addr User wallet address
    @param _t Epoch time to return voting power at
    @return User voting power
    """
    _epoch: uint256 = self.user_point_epoch[addr]
    if _epoch == 0:
        return 0
    else:
        last_point: Point = self.user_point_history[addr][_epoch]
        last_point.bias -= last_point.slope * convert(_t - last_point.ts, int128)
        if last_point.bias < 0:
            last_point.bias = 0
        return convert(last_point.bias, uint256)


@external
@view
def balanceOfAt(addr: address, _block: uint256) -> uint256:
    """
    @notice Measure voting power of `addr` at block height `_block`
    @dev Adheres to MiniMe `balanceOfAt` interface: https://github.com/Giveth/minime
    @param addr User's wallet address
    @param _block Block to calculate the voting power at
    @return Voting power
    """
    # Copying and pasting totalSupply code because Vyper cannot pass by
    # reference yet
    assert _block <= block.number

    # Binary search
    _min: uint256 = 0
    _max: uint256 = self.user_point_epoch[addr]
    for i in range(128):  # Will be always enough for 128-bit numbers
        if _min >= _max:
            break
        _mid: uint256 = (_min + _max + 1) / 2
        if self.user_point_history[addr][_mid].blk <= _block:
            _min = _mid
        else:
            _max = _mid - 1

    upoint: Point = self.user_point_history[addr][_min]

    max_epoch: uint256 = self.epoch
    _epoch: uint256 = self.find_block_epoch(_block, max_epoch)
    point_0: Point = self.point_history[_epoch]
    d_block: uint256 = 0
    d_t: uint256 = 0
    if _epoch < max_epoch:
        point_1: Point = self.point_history[_epoch + 1]
        d_block = point_1.blk - point_0.blk
        d_t = point_1.ts - point_0.ts
    else:
        d_block = block.number - point_0.blk
        d_t = block.timestamp - point_0.ts
    block_time: uint256 = point_0.ts
    if d_block != 0:
        block_time += d_t * (_block - point_0.blk) / d_block

    upoint.bias -= upoint.slope * convert(block_time - upoint.ts, int128)
    if upoint.bias >= 0:
        return convert(upoint.bias, uint256)
    else:
        return 0


@internal
@view
def supply_at(point: Point, t: uint256) -> uint256:
    """
    @notice Calculate total voting power at some point in the past
    @param point The point (bias/slope) to start search from
    @param t Time to calculate the total voting power at
    @return Total voting power at that time
    """
    last_point: Point = point
    t_i: uint256 = (last_point.ts / WEEK) * WEEK
    for i in range(255):
        t_i += WEEK
        d_slope: int128 = 0
        if t_i > t:
            t_i = t
        else:
            d_slope = self.slope_changes[t_i]
        last_point.bias -= last_point.slope * convert(t_i - last_point.ts, int128)
        if t_i == t:
            break
        last_point.slope += d_slope
        last_point.ts = t_i

    if last_point.bias < 0:
        last_point.bias = 0
    return convert(last_point.bias, uint256)


@external
@view
def totalSupply(t: uint256 = block.timestamp) -> uint256:
    """
    @notice Calculate total voting power
    @dev Adheres to the ERC20 `totalSupply` interface for Aragon compatibility
    @return Total voting power
    """
    _epoch: uint256 = self.epoch
    last_point: Point = self.point_history[_epoch]
    return self.supply_at(last_point, t)


@external
@view
def totalSupplyAt(_block: uint256) -> uint256:
    """
    @notice Calculate total voting power at some point in the past
    @param _block Block to calculate the total voting power at
    @return Total voting power at `_block`
    """
    assert _block <= block.number
    _epoch: uint256 = self.epoch
    target_epoch: uint256 = self.find_block_epoch(_block, _epoch)

    point: Point = self.point_history[target_epoch]
    dt: uint256 = 0
    if target_epoch < _epoch:
        point_next: Point = self.point_history[target_epoch + 1]
        if point.blk != point_next.blk:
            dt = (_block - point.blk) * (point_next.ts - point.ts) / (point_next.blk - point.blk)
    else:
        if point.blk != block.number:
            dt = (_block - point.blk) * (block.timestamp - point.ts) / (block.number - point.blk)
    # Now dt contains info on how far are we beyond point

    return self.supply_at(point, point.ts + dt)


# Dummy methods for compatibility with Aragon

@external
def changeController(_newController: address):
    """
    @dev Dummy method required for Aragon compatibility
    """
    assert msg.sender == self.controller
    self.controller = _newController

Contract Security Audit

Contract ABI

[{"name":"CommitOwnership","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyOwnership","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"Deposit","inputs":[{"name":"provider","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false},{"name":"locktime","type":"uint256","indexed":true},{"name":"type","type":"int128","indexed":false},{"name":"ts","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Withdraw","inputs":[{"name":"provider","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false},{"name":"ts","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Supply","inputs":[{"name":"prevSupply","type":"uint256","indexed":false},{"name":"supply","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"token_addr","type":"address"},{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_version","type":"string"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"addr","type":"address"}],"outputs":[],"gas":38895},{"stateMutability":"nonpayable","type":"function","name":"apply_transfer_ownership","inputs":[],"outputs":[],"gas":41034},{"stateMutability":"nonpayable","type":"function","name":"commit_smart_wallet_checker","inputs":[{"name":"addr","type":"address"}],"outputs":[],"gas":37605},{"stateMutability":"nonpayable","type":"function","name":"apply_smart_wallet_checker","inputs":[],"outputs":[],"gas":39632},{"stateMutability":"view","type":"function","name":"get_last_user_slope","inputs":[{"name":"addr","type":"address"}],"outputs":[{"name":"","type":"int128"}],"gas":5001},{"stateMutability":"view","type":"function","name":"user_point_history__ts","inputs":[{"name":"_addr","type":"address"},{"name":"_idx","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":2804},{"stateMutability":"view","type":"function","name":"locked__end","inputs":[{"name":"_addr","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":2789},{"stateMutability":"nonpayable","type":"function","name":"checkpoint","inputs":[],"outputs":[],"gas":37424696},{"stateMutability":"nonpayable","type":"function","name":"deposit_for","inputs":[{"name":"_addr","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[],"gas":75034171},{"stateMutability":"nonpayable","type":"function","name":"create_lock","inputs":[{"name":"_value","type":"uint256"},{"name":"_unlock_time","type":"uint256"}],"outputs":[],"gas":75035740},{"stateMutability":"nonpayable","type":"function","name":"increase_amount","inputs":[{"name":"_value","type":"uint256"}],"outputs":[],"gas":75035161},{"stateMutability":"nonpayable","type":"function","name":"increase_unlock_time","inputs":[{"name":"_unlock_time","type":"uint256"}],"outputs":[],"gas":75035808},{"stateMutability":"nonpayable","type":"function","name":"withdraw","inputs":[],"outputs":[],"gas":37603171},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"addr","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"addr","type":"address"},{"name":"_t","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"balanceOfAt","inputs":[{"name":"addr","type":"address"},{"name":"_block","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":824489},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[{"name":"t","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"totalSupplyAt","inputs":[{"name":"_block","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":1370618},{"stateMutability":"nonpayable","type":"function","name":"changeController","inputs":[{"name":"_newController","type":"address"}],"outputs":[],"gas":38055},{"stateMutability":"view","type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2928},{"stateMutability":"view","type":"function","name":"supply","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2958},{"stateMutability":"view","type":"function","name":"locked","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"amount","type":"int128"},{"name":"end","type":"uint256"}],"gas":5593},{"stateMutability":"view","type":"function","name":"epoch","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":3018},{"stateMutability":"view","type":"function","name":"point_history","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"bias","type":"int128"},{"name":"slope","type":"int128"},{"name":"ts","type":"uint256"},{"name":"blk","type":"uint256"}],"gas":9903},{"stateMutability":"view","type":"function","name":"user_point_history","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"uint256"}],"outputs":[{"name":"bias","type":"int128"},{"name":"slope","type":"int128"},{"name":"ts","type":"uint256"},{"name":"blk","type":"uint256"}],"gas":10148},{"stateMutability":"view","type":"function","name":"user_point_epoch","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3323},{"stateMutability":"view","type":"function","name":"slope_changes","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"int128"}],"gas":3253},{"stateMutability":"view","type":"function","name":"controller","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3168},{"stateMutability":"view","type":"function","name":"transfersEnabled","inputs":[],"outputs":[{"name":"","type":"bool"}],"gas":3198},{"stateMutability":"view","type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":13458},{"stateMutability":"view","type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":11211},{"stateMutability":"view","type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":11241},{"stateMutability":"view","type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":3318},{"stateMutability":"view","type":"function","name":"future_smart_wallet_checker","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3348},{"stateMutability":"view","type":"function","name":"smart_wallet_checker","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3378},{"stateMutability":"view","type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3408},{"stateMutability":"view","type":"function","name":"future_admin","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3438}]

6f7fffffffffffffffffffffffffffffff6040526080612bd8610140396020612bd860c03960c05160a01c612bd357606060206020612bd80160c03960c051612bd8016101c039604060206020612bd80160c03960c0516004013511612bd357604060206040612bd80160c03960c051612bd80161024039602060206040612bd80160c03960c0516004013511612bd357604060206060612bd80160c03960c051612bd8016102a039602060206060612bd80160c03960c0516004013511612bd357336c050c783eb9b5c840000000001b556101405160055543600c5542600b55336c050c783eb9b5c840000000000c5560016c050c783eb9b5c840000000000d556020610380600463313ce5676103205261033c610140515afa15612bd357601f3d1115612bd357600050610380516103005260ff6103005111612bd357610300516c050c783eb9b5c8400000000018556101c0806c050c783eb9b5c840000000000e602082510161012060006003818352015b82610120516020021115610187576101a9565b61012051602002850151610120518501555b8151600101808352811415610174575b505050505050610240806c050c783eb9b5c8400000000012602082510161012060006002818352015b826101205160200211156101e557610207565b61012051602002850151610120518501555b81516001018083528114156101d2575b5050505050506102a0806c050c783eb9b5c8400000000015602082510161012060006002818352015b8261012051602002111561024357610265565b61012051602002850151610120518501555b8151600101808352811415610230575b505050505050612bbb56600436101561000d57611b61565b600035601c526f7fffffffffffffffffffffffffffffff6040526000513461294657636b441a4081141561009d5760043560a01c612946576c050c783eb9b5c840000000001b54331415612946576004356c050c783eb9b5c840000000001c55600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b636a1c05ae811415610122576c050c783eb9b5c840000000001b54331415612946576c050c783eb9b5c840000000001c5461014052600061014051181561294657610140516c050c783eb9b5c840000000001b5561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b6357f901e28114156101625760043560a01c612946576c050c783eb9b5c840000000001b54331415612946576004356c050c783eb9b5c840000000001955005b638e5b490f8114156101a4576c050c783eb9b5c840000000001b54331415612946576c050c783eb9b5c8400000000019546c050c783eb9b5c840000000001a55005b637c74a1748114156102185760043560a01c612946576c050c783eb9b5c840000000000a60043560e05260c052604060c02054610140526001600461014051633b9aca0081101561294657026c050c783eb9b5c840000000000960043560e05260c052604060c02001015460005260206000f35b63da020a1881141561026a5760043560a01c6129465760026004602435633b9aca0081101561294657026c050c783eb9b5c840000000000960043560e05260c052604060c02001015460005260206000f35b63adc6358981141561029d5760043560a01c612946576001600760043560e05260c052604060c020015460005260206000f35b63c2c4c5c181141561032b5760403661014037604036610180376101405161016051610180516101a05160006101c0526101e061014080518252806020015182602001525050610220610180805182528060200151826020015250506102405161022051610200516101e0516101c05160065801611c4d565b6101a052610180526101605261014052600050005b633a46273e8114156104ba5760005461294657600160005560043560a01c61294657610140600760043560e05260c052604060c020805482526001810154826020015250506000602435111561294657600061014051136103cb576308c379a06101805260206101a05260166101c0527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006101e0526101c050606461019cfd5b42610160511161043f576308c379a06101805260206101a05260246101c0527f43616e6e6f742061646420746f2065787069726564206c6f636b2e20576974686101e0527f6472617700000000000000000000000000000000000000000000000000000000610200526101c050608461019cfd5b61014051610160513361018052604060046101a03760006101e052610200600760043560e05260c052604060c020805482526001810154826020015250506000610240526102405161022051610200516101e0516101c0516101a051610180516006580161241f565b61016052610140526000506000600055005b6365fc38738114156106e35760015461294657600160015533610140526101405160065801611b67565b60005060243562093a808082049050905062093a8080820282158284830414171561294657809050905090506101405261016060073360e05260c052604060c020805482526001810154826020015250506000600435111561294657610160511561058e576308c379a06101a05260206101c05260196101e0527f5769746864726177206f6c6420746f6b656e7320666972737400000000000000610200526101e05060646101bcfd5b426101405111610602576308c379a06101a05260206101c05260266101e0527f43616e206f6e6c79206c6f636b20756e74696c2074696d6520696e2074686520610200527f6675747572650000000000000000000000000000000000000000000000000000610220526101e05060846101bcfd5b42630784ce0081818301106129465780820190509050610140511115610667576308c379a06101a05260206101c052601e6101e0527f566f74696e67206c6f636b2063616e2062652034207965617273206d61780000610200526101e05060646101bcfd5b610140516101605161018051336101a052336101c0526004356101e052610140516102005261022061016080518252806020015182602001525050600161026052610260516102405161022051610200516101e0516101c0516101a0516006580161241f565b6101805261016052610140526000506000600155005b634957677c8114156108725760025461294657600160025533610140526101405160065801611b67565b60005061014060073360e05260c052604060c0208054825260018101548260200152505060006004351115612946576000610140511361078c576308c379a06101805260206101a05260166101c0527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006101e0526101c050606461019cfd5b426101605111610800576308c379a06101805260206101a05260246101c0527f43616e6e6f742061646420746f2065787069726564206c6f636b2e20576974686101e0527f6472617700000000000000000000000000000000000000000000000000000000610200526101c050608461019cfd5b61014051610160513361018052336101a0526004356101c05260006101e052610200610140805182528060200151826020015250506002610240526102405161022051610200516101e0516101c0516101a051610180516006580161241f565b61016052610140526000506000600255005b63eff7a612811415610abe5760035461294657600160035533610140526101405160065801611b67565b60005061014060073360e05260c052604060c0208054825260018101548260200152505060043562093a808082049050905062093a8080820282158284830414171561294657809050905090506101805242610160511161093c576308c379a06101a05260206101c052600c6101e0527f4c6f636b20657870697265640000000000000000000000000000000000000000610200526101e05060646101bcfd5b6000610140511361098c576308c379a06101a05260206101c05260116101e0527f4e6f7468696e67206973206c6f636b6564000000000000000000000000000000610200526101e05060646101bcfd5b6101605161018051116109de576308c379a06101a05260206101c052601f6101e0527f43616e206f6e6c7920696e637265617365206c6f636b206475726174696f6e00610200526101e05060646101bcfd5b42630784ce0081818301106129465780820190509050610180511115610a43576308c379a06101a05260206101c052601e6101e0527f566f74696e67206c6f636b2063616e2062652034207965617273206d61780000610200526101e05060646101bcfd5b610140516101605161018051336101a052336101c05260006101e052610180516102005261022061014080518252806020015182602001525050600361026052610260516102405161022051610200516101e0516101c0516101a0516006580161241f565b6101805261016052610140526000506000600355005b633ccfd60b811415610d015760045461294657600160045561014060073360e05260c052604060c0208054825260018101548260200152505061016051421015610b47576308c379a06101805260206101a05260166101c0527f546865206c6f636b206469646e277420657870697265000000000000000000006101e0526101c050606461019cfd5b610140516000811261294657610180526101a06101408051825280602001518260200152505060006101605260006101405260073360e05260c052604060c020610140805182558060200151600183015550506006546101e0526101e0516101805180821061294657808203905090506006556101405161016051610180516101a0516101c0516101e05133610200526102206101a08051825280602001518260200152505061026061014080518252806020015182602001525050610280516102605161024051610220516102005160065801611c4d565b6101e0526101c0526101a05261018052610160526101405260005060206102a0604463a9059cbb610200523361022052610180516102405261021c60006005545af11561294657601f3d1115612946576000506102a051156129465761018051610200524261022052337ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5686040610200a26101e051610200526101e051610180518082106129465780820390509050610220527f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c6040610200a16000600455005b6370a08231811415610d17574261014052610d37565b62fdd58e811415610d32576020602461014037600050610d37565b610e5f565b60043560a01c612946576c050c783eb9b5c840000000000a60043560e05260c052604060c020546101605261016051610d7957600060005260206000f3610e5d565b610180600461016051633b9aca0081101561294657026c050c783eb9b5c840000000000960043560e05260c052604060c0200180548252600181015482602001526002810154826040015260038101548260600152505061018080516101a051610140516101c051808210612946578082039050905060405181116129465780820280806000811215610e0857195b607f1c6129465790509050905080820380806000811215610e2557195b607f1c612946579050905090508152506000610180511215610e48576000610180525b61018051600081126129465760005260206000f35b005b634ee2cd7e8114156112585760043560a01c612946574360243511612946576000610140526c050c783eb9b5c840000000000a60043560e05260c052604060c020546101605261018060006080818352015b610160516101405110610ec357610f6d565b6101405161016051818183011061294657808201905090506001818183011061294657808201905090506002808204905090506101a052602435600360046101a051633b9aca0081101561294657026c050c783eb9b5c840000000000960043560e05260c052604060c02001015411610f43576101a05161014052610f5c565b6101a05160018082106129465780820390509050610160525b5b8151600101808352811415610eb1575b5050610180600461014051633b9aca0081101561294657026c050c783eb9b5c840000000000960043560e05260c052604060c02001805482526001810154826020015260028101548260400152600381015482606001525050600854610200526101405161016051610180516101a0516101c0516101e051610200516102205160243561024052610200516102605261026051610240516006580161269f565b6102c05261022052610200526101e0526101c0526101a0526101805261016052610140526102c051610220526102406004610220516c01431e0fae6d7217caa000000081101561294657026009018054825260018101548260200152600281015482604001526003810154826060015250506040366102c03761020051610220511015611125576103006004610220516001818183011061294657808201905090506c01431e0fae6d7217caa00000008110156129465702600901805482526001810154826020015260028101548260400152600381015482606001525050610360516102a05180821061294657808203905090506102c052610340516102805180821061294657808203905090506102e052611154565b436102a05180821061294657808203905090506102c052426102805180821061294657808203905090506102e0525b610280516103005260006102c05118156111c25761030080516102e0516024356102a051808210612946578082039050905080820282158284830414171561294657809050905090506102c05180801561294657820490509050818183011061294657808201905090508152505b61018080516101a051610300516101c0518082106129465780820390509050604051811161294657808202808060008112156111fa57195b607f1c612946579050905090508082038080600081121561121757195b607f1c612946579050905090508152506000610180511261124b5761018051600081126129465760005260206000f3611256565b600060005260206000f35b005b6318160ddd81141561126e57426101405261128f565b63bd85b03981141561128a57602060046101403760005061128f565b61136c565b600854610160526101806004610160516c01431e0fae6d7217caa000000081101561294657026009018054825260018101548260200152600281015482604001526003810154826060015250506101405161016051610180516101a0516101c0516101e0516102006101808051825280602001518260200152806040015182604001528060600151826060015250506101405161028052610280516102605161024051610220516102005160065801612783565b6102e0526101e0526101c0526101a0526101805261016052610140526102e05160005260206000f35b63981b24d081141561160f5743600435116129465760085461014052610140516101605160043561018052610140516101a0526101a051610180516006580161269f565b61020052610160526101405261020051610160526101806004610160516c01431e0fae6d7217caa00000008110156129465702600901805482526001810154826020015260028101548260400152600381015482606001525050600061020052610140516101605110156114f3576102206004610160516001818183011061294657808201905090506c01431e0fae6d7217caa00000008110156129465702600901805482526001810154826020015260028101548260400152600381015482606001525050610280516101e05118156114ee576004356101e0518082106129465780820390509050610260516101c05180821061294657808203905090508082028215828483041417156129465780905090509050610280516101e051808210612946578082039050905080801561294657820490509050610200525b611563565b436101e0511815611562576004356101e0518082106129465780820390509050426101c05180821061294657808203905090508082028215828483041417156129465780905090509050436101e051808210612946578082039050905080801561294657820490509050610200525b5b6101405161016051610180516101a0516101c0516101e051610200516102206101808051825280602001518260200152806040015182604001528060600151826060015250506101c05161020051818183011061294657808201905090506102a0526102a0516102805161026051610240516102205160065801612783565b61030052610200526101e0526101c0526101a0526101805261016052610140526103005160005260206000f35b633cebb82381141561164f5760043560a01c612946576c050c783eb9b5c840000000000c54331415612946576004356c050c783eb9b5c840000000000c55005b63fc0c546a8114156116675760055460005260206000f35b63047fc9aa81141561167f5760065460005260206000f35b63cbf9fe5f8114156116d35760043560a01c61294657600760043560e05260c052604060c020610140808080845481525050602081019050808060018501548152505060409050905060c05260c051610140f35b63900cf0cf8114156116eb5760085460005260206000f35b63d1febfb98114156117655760046004356c01431e0fae6d7217caa0000000811015612946570260090161014080808084548152505060208101905080806001850154815250506020810190508080600285015481525050602081019050808060038501548152505060809050905060c05260c051610140f35b6328d09d478114156117fa5760043560a01c612946576004602435633b9aca0081101561294657026c050c783eb9b5c840000000000960043560e05260c052604060c0200161014080808084548152505060208101905080806001850154815250506020810190508080600285015481525050602081019050808060038501548152505060809050905060c05260c051610140f35b63010ae7578114156118365760043560a01c612946576c050c783eb9b5c840000000000a60043560e05260c052604060c0205460005260206000f35b6371197484811415611868576c050c783eb9b5c840000000000b60043560e05260c052604060c0205460005260206000f35b63f77c479181141561188c576c050c783eb9b5c840000000000c5460005260206000f35b63bef97c878114156118b0576c050c783eb9b5c840000000000d5460005260206000f35b6306fdde03811415611959576c050c783eb9b5c840000000000e80610180602082540161012060006003818352015b826101205160200211156118f257611914565b61012051850154610120516020028501525b81516001018083528114156118df575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b6395d89b41811415611a02576c050c783eb9b5c840000000001280610180602082540161012060006002818352015b8261012051602002111561199b576119bd565b61012051850154610120516020028501525b8151600101808352811415611988575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b6354fd4d50811415611aab576c050c783eb9b5c840000000001580610180602082540161012060006002818352015b82610120516020021115611a4457611a66565b61012051850154610120516020028501525b8151600101808352811415611a31575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b63313ce567811415611acf576c050c783eb9b5c84000000000185460005260206000f35b638ff36fd1811415611af3576c050c783eb9b5c84000000000195460005260206000f35b637175d4f7811415611b17576c050c783eb9b5c840000000001a5460005260206000f35b63f851a440811415611b3b576c050c783eb9b5c840000000001b5460005260206000f35b6317f7182a811415611b5f576c050c783eb9b5c840000000001c5460005260206000f35b505b60006000fd5b610160526101405232610140511815611c47576c050c783eb9b5c840000000001a54610180526000610180511815611bdd576020610220602463c23697a86101a052610140516101c0526101bc6000610180515af11561294657601f3d1115612946576000506102205115611bdc5761016051565b5b6308c379a06101a05260206101c05260256101e0527f536d61727420636f6e7472616374206465706f7369746f7273206e6f7420616c610200527f6c6f776564000000000000000000000000000000000000000000000000000000610220526101e05060846101bcfd5b61016051565b6101e0526101405261016052610180526101a0526101c0526101403661020037600854610340526000610140511815611e045742610180511115611c975760006101605113611c9a565b60005b15611d0b5761016051630784ce0080820580806000811215611cb857195b607f1c6129465790509050905061022052610220516101805142808210612946578082039050905060405181116129465780820280806000811215611cf957195b607f1c61294657905090509050610200525b426101c0511115611d225760006101a05113611d25565b60005b15611d96576101a051630784ce0080820580806000811215611d4357195b607f1c612946579050905090506102a0526102a0516101c05142808210612946578082039050905060405181116129465780820280806000811215611d8457195b607f1c61294657905090509050610280525b6c050c783eb9b5c840000000000b6101805160e05260c052604060c020546103005260006101c0511815611e0357610180516101c0511415611ddf576103005161032052611e02565b6c050c783eb9b5c840000000000b6101c05160e05260c052604060c02054610320525b5b5b6103606000815260008160200152428160400152438160600152506000610340511115611e72576103606004610340516c01431e0fae6d7217caa000000081101561294657026009018054825260018101548260200152600281015482604001526003810154826060015250505b6103a0516103e0526104006103608051825280602001518260200152806040015182604001528060600151826060015250506000610480526103a051421115611f0d57670de0b6b3a7640000436103c05180821061294657808203905090508082028215828483041417156129465780905090509050426103a051808210612946578082039050905080801561294657820490509050610480525b6103e05162093a808082049050905062093a8080820282158284830414171561294657809050905090506104a0526104c0600060ff818352015b6104a0805162093a808181830110612946578082019050905081525060006104e052426104a0511115611f7e57426104a052611fa1565b6c050c783eb9b5c840000000000b6104a05160e05260c052604060c020546104e0525b6103608051610380516104a0516103e051808210612946578082039050905060405181116129465780820280806000811215611fd957195b607f1c6129465790509050905080820380806000811215611ff657195b607f1c6129465790509050905081525061038080516104e0518082018080600081121561201f57195b607f1c612946579050905090508152506000610360511215612042576000610360525b6000610380511215612055576000610380525b6104a0516103e0526104a0516103a05261046051610480516104a0516104405180821061294657808203905090508082028215828483041417156129465780905090509050670de0b6b3a764000080820490509050818183011061294657808201905090506103c0526103408051600181818301106129465780820190509050815250426104a05114156120f157436103c05261214956612138565b6004610340516c01431e0fae6d7217caa000000081101561294657026009016103608051825580602001516001830155806040015160028301558060600151600383015550505b5b8151600101808352811415611f47575b50506103405160085560006101405118156122195761038080516102a051610220518082038080600081121561217b57195b607f1c612946579050905090508082018080600081121561219857195b607f1c6129465790509050905081525061036080516102805161020051808203808060008112156121c557195b607f1c61294657905090509050808201808060008112156121e257195b607f1c612946579050905090508152506000610380511215612205576000610380525b6000610360511215612218576000610360525b5b6004610340516c01431e0fae6d7217caa00000008110156129465702600901610360805182558060200151600183015580604001516002830155806060015160038301555050600061014051181561241957426101805111156122fa576103008051610220518082018080600081121561228f57195b607f1c61294657905090509050815250610180516101c05114156122d75761030080516102a051808203808060008112156122c657195b607f1c612946579050905090508152505b610300516c050c783eb9b5c840000000000b6101805160e05260c052604060c020555b426101c051111561236057610180516101c051111561235f5761032080516102a0518082038080600081121561232c57195b607f1c61294657905090509050815250610320516c050c783eb9b5c840000000000b6101c05160e05260c052604060c020555b5b6c050c783eb9b5c840000000000a6101405160e05260c052604060c020546001818183011061294657808201905090506104c0526104c0516c050c783eb9b5c840000000000a6101405160e05260c052604060c02055426102c052436102e05260046104c051633b9aca0081101561294657026c050c783eb9b5c84000000000096101405160e05260c052604060c020016102808051825580602001516001830155806040015160028301558060600151600383015550505b6101e051565b610220526101405261016052610180526101a0526101c0526101e052610200526102406101c080518252806020015182602001525050600654610280526102805161018051818183011061294657808201905090506006556102a061024080518252806020015182602001525050610240805161018051604051811161294657808201808060008112156124af57195b607f1c6129465790509050905081525060006101a05118156124d4576101a051610260525b60076101605160e05260c052604060c020610240805182558060200151600183015550506101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c051610160516102e0526103006102a08051825280602001518260200152505061034061024080518252806020015182602001525050610360516103405161032051610300516102e05160065801611c4d565b6102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a052610180526101605261014052600050600061018051181561260a5760206103a060646323b872dd6102e0526101405161030052306103205261018051610340526102fc60006005545af11561294657601f3d1115612946576000506103a05115612946575b610180516102e0526102005161030052426103205261026051610160517f4566dfc29f6f11d13a418c26a02bef7c28bae749d4de47e4e6a7cddea6730d5960606102e0a3610280516102e052610280516101805181818301106129465780820190509050610300527f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c60406102e0a161022051565b61018052610140526101605260006101a052610160516101c0526101e060006080818352015b6101c0516101a051106126d757612771565b6101a0516101c05181818301106129465780820190509050600181818301106129465780820190509050600280820490509050610200526101405160036004610200516c01431e0fae6d7217caa0000000811015612946570260090101541161274757610200516101a052612760565b61020051600180821061294657808203905090506101c0525b5b81516001018083528114156126c5575b50506101a05160005260005161018051565b6101e0526101405261016052610180526101a0526101c0526102006101408051825280602001518260200152806040015182604001528060600151826060015250506102405162093a808082049050905062093a808082028215828483041417156129465780905090509050610280526102a0600060ff818352015b610280805162093a808181830110612946578082019050905081525060006102c0526101c05161028051111561283c576101c0516102805261285f565b6c050c783eb9b5c840000000000b6102805160e05260c052604060c020546102c0525b610200805161022051610280516102405180821061294657808203905090506040518111612946578082028080600081121561289757195b607f1c61294657905090509050808203808060008112156128b457195b607f1c612946579050905090508152506101c0516102805114156128d757612919565b61022080516102c051808201808060008112156128f057195b607f1c6129465790509050905081525061028051610240525b81516001018083528114156127ff575b5050600061020051121561292e576000610200525b6102005160008112612946576000526000516101e051565b600080fd5b610270612bbb03610270600039610270612bbb036000f35b600080fd00000000000000000000000092e187a03b6cd19cb6af293ba17f2745fd2357d5000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000676654455434b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000676654455434b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005312e302e30000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x600436101561000d57611b61565b600035601c526f7fffffffffffffffffffffffffffffff6040526000513461294657636b441a4081141561009d5760043560a01c612946576c050c783eb9b5c840000000001b54331415612946576004356c050c783eb9b5c840000000001c55600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b636a1c05ae811415610122576c050c783eb9b5c840000000001b54331415612946576c050c783eb9b5c840000000001c5461014052600061014051181561294657610140516c050c783eb9b5c840000000001b5561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b6357f901e28114156101625760043560a01c612946576c050c783eb9b5c840000000001b54331415612946576004356c050c783eb9b5c840000000001955005b638e5b490f8114156101a4576c050c783eb9b5c840000000001b54331415612946576c050c783eb9b5c8400000000019546c050c783eb9b5c840000000001a55005b637c74a1748114156102185760043560a01c612946576c050c783eb9b5c840000000000a60043560e05260c052604060c02054610140526001600461014051633b9aca0081101561294657026c050c783eb9b5c840000000000960043560e05260c052604060c02001015460005260206000f35b63da020a1881141561026a5760043560a01c6129465760026004602435633b9aca0081101561294657026c050c783eb9b5c840000000000960043560e05260c052604060c02001015460005260206000f35b63adc6358981141561029d5760043560a01c612946576001600760043560e05260c052604060c020015460005260206000f35b63c2c4c5c181141561032b5760403661014037604036610180376101405161016051610180516101a05160006101c0526101e061014080518252806020015182602001525050610220610180805182528060200151826020015250506102405161022051610200516101e0516101c05160065801611c4d565b6101a052610180526101605261014052600050005b633a46273e8114156104ba5760005461294657600160005560043560a01c61294657610140600760043560e05260c052604060c020805482526001810154826020015250506000602435111561294657600061014051136103cb576308c379a06101805260206101a05260166101c0527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006101e0526101c050606461019cfd5b42610160511161043f576308c379a06101805260206101a05260246101c0527f43616e6e6f742061646420746f2065787069726564206c6f636b2e20576974686101e0527f6472617700000000000000000000000000000000000000000000000000000000610200526101c050608461019cfd5b61014051610160513361018052604060046101a03760006101e052610200600760043560e05260c052604060c020805482526001810154826020015250506000610240526102405161022051610200516101e0516101c0516101a051610180516006580161241f565b61016052610140526000506000600055005b6365fc38738114156106e35760015461294657600160015533610140526101405160065801611b67565b60005060243562093a808082049050905062093a8080820282158284830414171561294657809050905090506101405261016060073360e05260c052604060c020805482526001810154826020015250506000600435111561294657610160511561058e576308c379a06101a05260206101c05260196101e0527f5769746864726177206f6c6420746f6b656e7320666972737400000000000000610200526101e05060646101bcfd5b426101405111610602576308c379a06101a05260206101c05260266101e0527f43616e206f6e6c79206c6f636b20756e74696c2074696d6520696e2074686520610200527f6675747572650000000000000000000000000000000000000000000000000000610220526101e05060846101bcfd5b42630784ce0081818301106129465780820190509050610140511115610667576308c379a06101a05260206101c052601e6101e0527f566f74696e67206c6f636b2063616e2062652034207965617273206d61780000610200526101e05060646101bcfd5b610140516101605161018051336101a052336101c0526004356101e052610140516102005261022061016080518252806020015182602001525050600161026052610260516102405161022051610200516101e0516101c0516101a0516006580161241f565b6101805261016052610140526000506000600155005b634957677c8114156108725760025461294657600160025533610140526101405160065801611b67565b60005061014060073360e05260c052604060c0208054825260018101548260200152505060006004351115612946576000610140511361078c576308c379a06101805260206101a05260166101c0527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006101e0526101c050606461019cfd5b426101605111610800576308c379a06101805260206101a05260246101c0527f43616e6e6f742061646420746f2065787069726564206c6f636b2e20576974686101e0527f6472617700000000000000000000000000000000000000000000000000000000610200526101c050608461019cfd5b61014051610160513361018052336101a0526004356101c05260006101e052610200610140805182528060200151826020015250506002610240526102405161022051610200516101e0516101c0516101a051610180516006580161241f565b61016052610140526000506000600255005b63eff7a612811415610abe5760035461294657600160035533610140526101405160065801611b67565b60005061014060073360e05260c052604060c0208054825260018101548260200152505060043562093a808082049050905062093a8080820282158284830414171561294657809050905090506101805242610160511161093c576308c379a06101a05260206101c052600c6101e0527f4c6f636b20657870697265640000000000000000000000000000000000000000610200526101e05060646101bcfd5b6000610140511361098c576308c379a06101a05260206101c05260116101e0527f4e6f7468696e67206973206c6f636b6564000000000000000000000000000000610200526101e05060646101bcfd5b6101605161018051116109de576308c379a06101a05260206101c052601f6101e0527f43616e206f6e6c7920696e637265617365206c6f636b206475726174696f6e00610200526101e05060646101bcfd5b42630784ce0081818301106129465780820190509050610180511115610a43576308c379a06101a05260206101c052601e6101e0527f566f74696e67206c6f636b2063616e2062652034207965617273206d61780000610200526101e05060646101bcfd5b610140516101605161018051336101a052336101c05260006101e052610180516102005261022061014080518252806020015182602001525050600361026052610260516102405161022051610200516101e0516101c0516101a0516006580161241f565b6101805261016052610140526000506000600355005b633ccfd60b811415610d015760045461294657600160045561014060073360e05260c052604060c0208054825260018101548260200152505061016051421015610b47576308c379a06101805260206101a05260166101c0527f546865206c6f636b206469646e277420657870697265000000000000000000006101e0526101c050606461019cfd5b610140516000811261294657610180526101a06101408051825280602001518260200152505060006101605260006101405260073360e05260c052604060c020610140805182558060200151600183015550506006546101e0526101e0516101805180821061294657808203905090506006556101405161016051610180516101a0516101c0516101e05133610200526102206101a08051825280602001518260200152505061026061014080518252806020015182602001525050610280516102605161024051610220516102005160065801611c4d565b6101e0526101c0526101a05261018052610160526101405260005060206102a0604463a9059cbb610200523361022052610180516102405261021c60006005545af11561294657601f3d1115612946576000506102a051156129465761018051610200524261022052337ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5686040610200a26101e051610200526101e051610180518082106129465780820390509050610220527f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c6040610200a16000600455005b6370a08231811415610d17574261014052610d37565b62fdd58e811415610d32576020602461014037600050610d37565b610e5f565b60043560a01c612946576c050c783eb9b5c840000000000a60043560e05260c052604060c020546101605261016051610d7957600060005260206000f3610e5d565b610180600461016051633b9aca0081101561294657026c050c783eb9b5c840000000000960043560e05260c052604060c0200180548252600181015482602001526002810154826040015260038101548260600152505061018080516101a051610140516101c051808210612946578082039050905060405181116129465780820280806000811215610e0857195b607f1c6129465790509050905080820380806000811215610e2557195b607f1c612946579050905090508152506000610180511215610e48576000610180525b61018051600081126129465760005260206000f35b005b634ee2cd7e8114156112585760043560a01c612946574360243511612946576000610140526c050c783eb9b5c840000000000a60043560e05260c052604060c020546101605261018060006080818352015b610160516101405110610ec357610f6d565b6101405161016051818183011061294657808201905090506001818183011061294657808201905090506002808204905090506101a052602435600360046101a051633b9aca0081101561294657026c050c783eb9b5c840000000000960043560e05260c052604060c02001015411610f43576101a05161014052610f5c565b6101a05160018082106129465780820390509050610160525b5b8151600101808352811415610eb1575b5050610180600461014051633b9aca0081101561294657026c050c783eb9b5c840000000000960043560e05260c052604060c02001805482526001810154826020015260028101548260400152600381015482606001525050600854610200526101405161016051610180516101a0516101c0516101e051610200516102205160243561024052610200516102605261026051610240516006580161269f565b6102c05261022052610200526101e0526101c0526101a0526101805261016052610140526102c051610220526102406004610220516c01431e0fae6d7217caa000000081101561294657026009018054825260018101548260200152600281015482604001526003810154826060015250506040366102c03761020051610220511015611125576103006004610220516001818183011061294657808201905090506c01431e0fae6d7217caa00000008110156129465702600901805482526001810154826020015260028101548260400152600381015482606001525050610360516102a05180821061294657808203905090506102c052610340516102805180821061294657808203905090506102e052611154565b436102a05180821061294657808203905090506102c052426102805180821061294657808203905090506102e0525b610280516103005260006102c05118156111c25761030080516102e0516024356102a051808210612946578082039050905080820282158284830414171561294657809050905090506102c05180801561294657820490509050818183011061294657808201905090508152505b61018080516101a051610300516101c0518082106129465780820390509050604051811161294657808202808060008112156111fa57195b607f1c612946579050905090508082038080600081121561121757195b607f1c612946579050905090508152506000610180511261124b5761018051600081126129465760005260206000f3611256565b600060005260206000f35b005b6318160ddd81141561126e57426101405261128f565b63bd85b03981141561128a57602060046101403760005061128f565b61136c565b600854610160526101806004610160516c01431e0fae6d7217caa000000081101561294657026009018054825260018101548260200152600281015482604001526003810154826060015250506101405161016051610180516101a0516101c0516101e0516102006101808051825280602001518260200152806040015182604001528060600151826060015250506101405161028052610280516102605161024051610220516102005160065801612783565b6102e0526101e0526101c0526101a0526101805261016052610140526102e05160005260206000f35b63981b24d081141561160f5743600435116129465760085461014052610140516101605160043561018052610140516101a0526101a051610180516006580161269f565b61020052610160526101405261020051610160526101806004610160516c01431e0fae6d7217caa00000008110156129465702600901805482526001810154826020015260028101548260400152600381015482606001525050600061020052610140516101605110156114f3576102206004610160516001818183011061294657808201905090506c01431e0fae6d7217caa00000008110156129465702600901805482526001810154826020015260028101548260400152600381015482606001525050610280516101e05118156114ee576004356101e0518082106129465780820390509050610260516101c05180821061294657808203905090508082028215828483041417156129465780905090509050610280516101e051808210612946578082039050905080801561294657820490509050610200525b611563565b436101e0511815611562576004356101e0518082106129465780820390509050426101c05180821061294657808203905090508082028215828483041417156129465780905090509050436101e051808210612946578082039050905080801561294657820490509050610200525b5b6101405161016051610180516101a0516101c0516101e051610200516102206101808051825280602001518260200152806040015182604001528060600151826060015250506101c05161020051818183011061294657808201905090506102a0526102a0516102805161026051610240516102205160065801612783565b61030052610200526101e0526101c0526101a0526101805261016052610140526103005160005260206000f35b633cebb82381141561164f5760043560a01c612946576c050c783eb9b5c840000000000c54331415612946576004356c050c783eb9b5c840000000000c55005b63fc0c546a8114156116675760055460005260206000f35b63047fc9aa81141561167f5760065460005260206000f35b63cbf9fe5f8114156116d35760043560a01c61294657600760043560e05260c052604060c020610140808080845481525050602081019050808060018501548152505060409050905060c05260c051610140f35b63900cf0cf8114156116eb5760085460005260206000f35b63d1febfb98114156117655760046004356c01431e0fae6d7217caa0000000811015612946570260090161014080808084548152505060208101905080806001850154815250506020810190508080600285015481525050602081019050808060038501548152505060809050905060c05260c051610140f35b6328d09d478114156117fa5760043560a01c612946576004602435633b9aca0081101561294657026c050c783eb9b5c840000000000960043560e05260c052604060c0200161014080808084548152505060208101905080806001850154815250506020810190508080600285015481525050602081019050808060038501548152505060809050905060c05260c051610140f35b63010ae7578114156118365760043560a01c612946576c050c783eb9b5c840000000000a60043560e05260c052604060c0205460005260206000f35b6371197484811415611868576c050c783eb9b5c840000000000b60043560e05260c052604060c0205460005260206000f35b63f77c479181141561188c576c050c783eb9b5c840000000000c5460005260206000f35b63bef97c878114156118b0576c050c783eb9b5c840000000000d5460005260206000f35b6306fdde03811415611959576c050c783eb9b5c840000000000e80610180602082540161012060006003818352015b826101205160200211156118f257611914565b61012051850154610120516020028501525b81516001018083528114156118df575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b6395d89b41811415611a02576c050c783eb9b5c840000000001280610180602082540161012060006002818352015b8261012051602002111561199b576119bd565b61012051850154610120516020028501525b8151600101808352811415611988575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b6354fd4d50811415611aab576c050c783eb9b5c840000000001580610180602082540161012060006002818352015b82610120516020021115611a4457611a66565b61012051850154610120516020028501525b8151600101808352811415611a31575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b63313ce567811415611acf576c050c783eb9b5c84000000000185460005260206000f35b638ff36fd1811415611af3576c050c783eb9b5c84000000000195460005260206000f35b637175d4f7811415611b17576c050c783eb9b5c840000000001a5460005260206000f35b63f851a440811415611b3b576c050c783eb9b5c840000000001b5460005260206000f35b6317f7182a811415611b5f576c050c783eb9b5c840000000001c5460005260206000f35b505b60006000fd5b610160526101405232610140511815611c47576c050c783eb9b5c840000000001a54610180526000610180511815611bdd576020610220602463c23697a86101a052610140516101c0526101bc6000610180515af11561294657601f3d1115612946576000506102205115611bdc5761016051565b5b6308c379a06101a05260206101c05260256101e0527f536d61727420636f6e7472616374206465706f7369746f7273206e6f7420616c610200527f6c6f776564000000000000000000000000000000000000000000000000000000610220526101e05060846101bcfd5b61016051565b6101e0526101405261016052610180526101a0526101c0526101403661020037600854610340526000610140511815611e045742610180511115611c975760006101605113611c9a565b60005b15611d0b5761016051630784ce0080820580806000811215611cb857195b607f1c6129465790509050905061022052610220516101805142808210612946578082039050905060405181116129465780820280806000811215611cf957195b607f1c61294657905090509050610200525b426101c0511115611d225760006101a05113611d25565b60005b15611d96576101a051630784ce0080820580806000811215611d4357195b607f1c612946579050905090506102a0526102a0516101c05142808210612946578082039050905060405181116129465780820280806000811215611d8457195b607f1c61294657905090509050610280525b6c050c783eb9b5c840000000000b6101805160e05260c052604060c020546103005260006101c0511815611e0357610180516101c0511415611ddf576103005161032052611e02565b6c050c783eb9b5c840000000000b6101c05160e05260c052604060c02054610320525b5b5b6103606000815260008160200152428160400152438160600152506000610340511115611e72576103606004610340516c01431e0fae6d7217caa000000081101561294657026009018054825260018101548260200152600281015482604001526003810154826060015250505b6103a0516103e0526104006103608051825280602001518260200152806040015182604001528060600151826060015250506000610480526103a051421115611f0d57670de0b6b3a7640000436103c05180821061294657808203905090508082028215828483041417156129465780905090509050426103a051808210612946578082039050905080801561294657820490509050610480525b6103e05162093a808082049050905062093a8080820282158284830414171561294657809050905090506104a0526104c0600060ff818352015b6104a0805162093a808181830110612946578082019050905081525060006104e052426104a0511115611f7e57426104a052611fa1565b6c050c783eb9b5c840000000000b6104a05160e05260c052604060c020546104e0525b6103608051610380516104a0516103e051808210612946578082039050905060405181116129465780820280806000811215611fd957195b607f1c6129465790509050905080820380806000811215611ff657195b607f1c6129465790509050905081525061038080516104e0518082018080600081121561201f57195b607f1c612946579050905090508152506000610360511215612042576000610360525b6000610380511215612055576000610380525b6104a0516103e0526104a0516103a05261046051610480516104a0516104405180821061294657808203905090508082028215828483041417156129465780905090509050670de0b6b3a764000080820490509050818183011061294657808201905090506103c0526103408051600181818301106129465780820190509050815250426104a05114156120f157436103c05261214956612138565b6004610340516c01431e0fae6d7217caa000000081101561294657026009016103608051825580602001516001830155806040015160028301558060600151600383015550505b5b8151600101808352811415611f47575b50506103405160085560006101405118156122195761038080516102a051610220518082038080600081121561217b57195b607f1c612946579050905090508082018080600081121561219857195b607f1c6129465790509050905081525061036080516102805161020051808203808060008112156121c557195b607f1c61294657905090509050808201808060008112156121e257195b607f1c612946579050905090508152506000610380511215612205576000610380525b6000610360511215612218576000610360525b5b6004610340516c01431e0fae6d7217caa00000008110156129465702600901610360805182558060200151600183015580604001516002830155806060015160038301555050600061014051181561241957426101805111156122fa576103008051610220518082018080600081121561228f57195b607f1c61294657905090509050815250610180516101c05114156122d75761030080516102a051808203808060008112156122c657195b607f1c612946579050905090508152505b610300516c050c783eb9b5c840000000000b6101805160e05260c052604060c020555b426101c051111561236057610180516101c051111561235f5761032080516102a0518082038080600081121561232c57195b607f1c61294657905090509050815250610320516c050c783eb9b5c840000000000b6101c05160e05260c052604060c020555b5b6c050c783eb9b5c840000000000a6101405160e05260c052604060c020546001818183011061294657808201905090506104c0526104c0516c050c783eb9b5c840000000000a6101405160e05260c052604060c02055426102c052436102e05260046104c051633b9aca0081101561294657026c050c783eb9b5c84000000000096101405160e05260c052604060c020016102808051825580602001516001830155806040015160028301558060600151600383015550505b6101e051565b610220526101405261016052610180526101a0526101c0526101e052610200526102406101c080518252806020015182602001525050600654610280526102805161018051818183011061294657808201905090506006556102a061024080518252806020015182602001525050610240805161018051604051811161294657808201808060008112156124af57195b607f1c6129465790509050905081525060006101a05118156124d4576101a051610260525b60076101605160e05260c052604060c020610240805182558060200151600183015550506101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c051610160516102e0526103006102a08051825280602001518260200152505061034061024080518252806020015182602001525050610360516103405161032051610300516102e05160065801611c4d565b6102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a052610180526101605261014052600050600061018051181561260a5760206103a060646323b872dd6102e0526101405161030052306103205261018051610340526102fc60006005545af11561294657601f3d1115612946576000506103a05115612946575b610180516102e0526102005161030052426103205261026051610160517f4566dfc29f6f11d13a418c26a02bef7c28bae749d4de47e4e6a7cddea6730d5960606102e0a3610280516102e052610280516101805181818301106129465780820190509050610300527f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c60406102e0a161022051565b61018052610140526101605260006101a052610160516101c0526101e060006080818352015b6101c0516101a051106126d757612771565b6101a0516101c05181818301106129465780820190509050600181818301106129465780820190509050600280820490509050610200526101405160036004610200516c01431e0fae6d7217caa0000000811015612946570260090101541161274757610200516101a052612760565b61020051600180821061294657808203905090506101c0525b5b81516001018083528114156126c5575b50506101a05160005260005161018051565b6101e0526101405261016052610180526101a0526101c0526102006101408051825280602001518260200152806040015182604001528060600151826060015250506102405162093a808082049050905062093a808082028215828483041417156129465780905090509050610280526102a0600060ff818352015b610280805162093a808181830110612946578082019050905081525060006102c0526101c05161028051111561283c576101c0516102805261285f565b6c050c783eb9b5c840000000000b6102805160e05260c052604060c020546102c0525b610200805161022051610280516102405180821061294657808203905090506040518111612946578082028080600081121561289757195b607f1c61294657905090509050808203808060008112156128b457195b607f1c612946579050905090508152506101c0516102805114156128d757612919565b61022080516102c051808201808060008112156128f057195b607f1c6129465790509050905081525061028051610240525b81516001018083528114156127ff575b5050600061020051121561292e576000610200525b6102005160008112612946576000526000516101e051565b600080fd

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

00000000000000000000000092e187a03b6cd19cb6af293ba17f2745fd2357d5000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000676654455434b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000676654455434b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005312e302e30000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : token_addr (address): 0x92E187a03B6CD19CB6AF293ba17F2745Fd2357D5
Arg [1] : _name (string): veDUCK
Arg [2] : _symbol (string): veDUCK
Arg [3] : _version (string): 1.0.0

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 00000000000000000000000092e187a03b6cd19cb6af293ba17f2745fd2357d5
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [5] : 76654455434b0000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [7] : 76654455434b0000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [9] : 312e302e30000000000000000000000000000000000000000000000000000000


Loading...
Loading
Loading...
Loading
[ 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.