ETH Price: $2,637.29 (+0.44%)

Contract

0xA50cCc70b6a011CffDdf45057E39679379187287
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Remove_liquidity...196134652024-04-08 20:56:35192 days ago1712609795IN
Curve.fi: PAX Deposit
0 ETH0.0027816622.49594482
Remove_liquidity188428662023-12-22 17:27:47300 days ago1703266067IN
Curve.fi: PAX Deposit
0 ETH0.0281101135.38373803
Remove_liquidity183118632023-10-09 8:56:47374 days ago1696841807IN
Curve.fi: PAX Deposit
0 ETH0.005475867.2682479
Add_liquidity173921042023-06-02 9:14:59503 days ago1685697299IN
Curve.fi: PAX Deposit
0 ETH0.0189166128.91577477
Remove_liquidity...173910292023-06-02 5:36:59504 days ago1685684219IN
Curve.fi: PAX Deposit
0 ETH0.0338640523.55394916
Remove_liquidity173534682023-05-27 22:49:35509 days ago1685227775IN
Curve.fi: PAX Deposit
0 ETH0.0339712824.10935068
Add_liquidity171545612023-04-29 21:58:47537 days ago1682805527IN
Curve.fi: PAX Deposit
0 ETH0.0198533135.59727454
Remove_liquidity171206522023-04-25 3:37:47542 days ago1682393867IN
Curve.fi: PAX Deposit
0 ETH0.0470613633
Add_liquidity170732222023-04-18 11:17:47548 days ago1681816667IN
Curve.fi: PAX Deposit
0 ETH0.0282535934
Add_liquidity170496002023-04-15 2:52:59552 days ago1681527179IN
Curve.fi: PAX Deposit
0 ETH0.0154106922
Remove_liquidity...169874732023-04-06 5:09:59561 days ago1680757799IN
Curve.fi: PAX Deposit
0 ETH0.0200081525.16698281
Remove_liquidity...168752992023-03-21 10:03:47576 days ago1679393027IN
Curve.fi: PAX Deposit
0 ETH0.0106330512.8925541
Remove_liquidity...167109722023-02-26 7:37:47600 days ago1677397067IN
Curve.fi: PAX Deposit
0 ETH0.0161988220.13151262
Remove_liquidity...166103842023-02-12 4:47:11614 days ago1676177231IN
Curve.fi: PAX Deposit
0 ETH0.0121873515
Remove_liquidity...165241362023-01-31 3:31:23626 days ago1675135883IN
Curve.fi: PAX Deposit
0 ETH0.0159369119.40466845
Remove_liquidity...165199332023-01-30 13:26:59626 days ago1675085219IN
Curve.fi: PAX Deposit
0 ETH0.0114922914
Remove_liquidity...164663022023-01-23 1:45:23634 days ago1674438323IN
Curve.fi: PAX Deposit
0 ETH0.0126136615.34931626
Remove_liquidity...164326892023-01-18 9:07:35638 days ago1674032855IN
Curve.fi: PAX Deposit
0 ETH0.0133168316.48825651
Remove_liquidity...163836362023-01-11 12:41:59645 days ago1673440919IN
Curve.fi: PAX Deposit
0 ETH0.0145068617.6536249
Remove_liquidity...162861982022-12-28 22:20:23659 days ago1672266023IN
Curve.fi: PAX Deposit
0 ETH0.0127548515.94723967
Remove_liquidity...162800232022-12-28 1:39:59660 days ago1672191599IN
Curve.fi: PAX Deposit
0 ETH0.0123807215.15588903
Remove_liquidity...162798492022-12-28 1:05:11660 days ago1672189511IN
Curve.fi: PAX Deposit
0 ETH0.0104601313
Remove_liquidity...162700732022-12-26 16:18:59661 days ago1672071539IN
Curve.fi: PAX Deposit
0 ETH0.0090392511
Add_liquidity160039322022-11-19 12:02:11698 days ago1668859331IN
Curve.fi: PAX Deposit
0 ETH0.0124771611.3476211
Remove_liquidity...158295402022-10-26 3:24:47723 days ago1666754687IN
Curve.fi: PAX Deposit
0 ETH0.0044258411.06507737
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.1.0b17

Optimization Enabled:
N/A

Other Settings:
None license

Contract Source Code (Vyper language format)

# A "zap" to deposit/withdraw Curve contract without too many transactions
# (c) Curve.Fi, 2020
from vyper.interfaces import ERC20

# External Contracts
contract yERC20:
    def totalSupply() -> uint256: constant
    def allowance(_owner: address, _spender: address) -> uint256: constant
    def transfer(_to: address, _value: uint256) -> bool: modifying
    def transferFrom(_from: address, _to: address, _value: uint256) -> bool: modifying
    def approve(_spender: address, _value: uint256) -> bool: modifying
    def name() -> string[64]: constant
    def symbol() -> string[32]: constant
    def decimals() -> uint256: constant
    def balanceOf(arg0: address) -> uint256: constant
    def deposit(depositAmount: uint256): modifying
    def withdraw(withdrawTokens: uint256): modifying
    def getPricePerFullShare() -> uint256: constant




# Tether transfer-only ABI
contract USDT:
    def transfer(_to: address, _value: uint256): modifying
    def transferFrom(_from: address, _to: address, _value: uint256): modifying


contract Curve:
    def add_liquidity(amounts: uint256[N_COINS], min_mint_amount: uint256): modifying
    def remove_liquidity(_amount: uint256, min_amounts: uint256[N_COINS]): modifying
    def remove_liquidity_imbalance(amounts: uint256[N_COINS], max_burn_amount: uint256): modifying
    def balances(i: int128) -> uint256: constant
    def A() -> uint256: constant
    def fee() -> uint256: constant
    def owner() -> address: constant


N_COINS: constant(int128) = 4
TETHERED: constant(bool[N_COINS]) = [False, False, True, False]
USE_LENDING: constant(bool[N_COINS]) = [True, True, True, False]
ZERO256: constant(uint256) = 0  # This hack is really bad XXX
ZEROS: constant(uint256[N_COINS]) = [ZERO256, ZERO256, ZERO256, ZERO256]  # <- change
LENDING_PRECISION: constant(uint256) = 10 ** 18
PRECISION: constant(uint256) = 10 ** 18
PRECISION_MUL: constant(uint256[N_COINS]) = [convert(1, uint256), convert(1000000000000, uint256), convert(1000000000000, uint256), convert(1, uint256)]
FEE_DENOMINATOR: constant(uint256) = 10 ** 10
FEE_IMPRECISION: constant(uint256) = 25 * 10 ** 8  # % of the fee

coins: public(address[N_COINS])
underlying_coins: public(address[N_COINS])
curve: public(address)
token: public(address)


@public
def __init__(_coins: address[N_COINS], _underlying_coins: address[N_COINS],
             _curve: address, _token: address):
    self.coins = _coins
    self.underlying_coins = _underlying_coins
    self.curve = _curve
    self.token = _token


@public
@nonreentrant('lock')
def add_liquidity(uamounts: uint256[N_COINS], min_mint_amount: uint256):
    use_lending: bool[N_COINS] = USE_LENDING
    tethered: bool[N_COINS] = TETHERED
    amounts: uint256[N_COINS] = ZEROS

    for i in range(N_COINS):
        uamount: uint256 = uamounts[i]

        if uamount > 0:
            # Transfer the underlying coin from owner
            if tethered[i]:
                USDT(self.underlying_coins[i]).transferFrom(
                    msg.sender, self, uamount)
            else:
                assert_modifiable(ERC20(self.underlying_coins[i])\
                    .transferFrom(msg.sender, self, uamount))

            # Mint if needed
            if use_lending[i]:
                ERC20(self.underlying_coins[i]).approve(self.coins[i], uamount)
                yERC20(self.coins[i]).deposit(uamount)
                amounts[i] = yERC20(self.coins[i]).balanceOf(self)
                ERC20(self.coins[i]).approve(self.curve, amounts[i])
            else:
                amounts[i] = uamount
                ERC20(self.underlying_coins[i]).approve(self.curve, uamount)

    Curve(self.curve).add_liquidity(amounts, min_mint_amount)

    tokens: uint256 = ERC20(self.token).balanceOf(self)
    assert_modifiable(ERC20(self.token).transfer(msg.sender, tokens))


@private
def _send_all(_addr: address, min_uamounts: uint256[N_COINS], one: int128):
    use_lending: bool[N_COINS] = USE_LENDING
    tethered: bool[N_COINS] = TETHERED

    for i in range(N_COINS):
        if (one < 0) or (i == one):
            if use_lending[i]:
                _coin: address = self.coins[i]
                _balance: uint256 = yERC20(_coin).balanceOf(self)
                if _balance == 0:  # Do nothing if there are 0 coins
                    continue
                yERC20(_coin).withdraw(_balance)

            _ucoin: address = self.underlying_coins[i]
            _uamount: uint256 = ERC20(_ucoin).balanceOf(self)
            assert _uamount >= min_uamounts[i], "Not enough coins withdrawn"

            # Send only if we have something to send
            if _uamount >= 0:
                if tethered[i]:
                    USDT(_ucoin).transfer(_addr, _uamount)
                else:
                    assert_modifiable(ERC20(_ucoin).transfer(_addr, _uamount))


@public
@nonreentrant('lock')
def remove_liquidity(_amount: uint256, min_uamounts: uint256[N_COINS]):
    zeros: uint256[N_COINS] = ZEROS

    assert_modifiable(ERC20(self.token).transferFrom(msg.sender, self, _amount))
    Curve(self.curve).remove_liquidity(_amount, zeros)

    self._send_all(msg.sender, min_uamounts, -1)


@public
@nonreentrant('lock')
def remove_liquidity_imbalance(uamounts: uint256[N_COINS], max_burn_amount: uint256):
    """
    Get max_burn_amount in, remove requested liquidity and transfer back what is left
    """
    use_lending: bool[N_COINS] = USE_LENDING
    tethered: bool[N_COINS] = TETHERED
    _token: address = self.token

    amounts: uint256[N_COINS] = uamounts
    for i in range(N_COINS):
        if use_lending[i] and amounts[i] > 0:
            rate: uint256 = yERC20(self.coins[i]).getPricePerFullShare()
            amounts[i] = amounts[i] * LENDING_PRECISION / rate
        # if not use_lending - all good already

    # Transfrer max tokens in
    _tokens: uint256 = ERC20(_token).balanceOf(msg.sender)
    if _tokens > max_burn_amount:
        _tokens = max_burn_amount
    assert_modifiable(ERC20(_token).transferFrom(msg.sender, self, _tokens))

    Curve(self.curve).remove_liquidity_imbalance(amounts, max_burn_amount)

    # Transfer unused tokens back
    _tokens = ERC20(_token).balanceOf(self)
    assert_modifiable(ERC20(_token).transfer(msg.sender, _tokens))

    # Unwrap and transfer all the coins we've got
    self._send_all(msg.sender, ZEROS, -1)


@private
@constant
def _xp_mem(rates: uint256[N_COINS], _balances: uint256[N_COINS]) -> uint256[N_COINS]:
    result: uint256[N_COINS] = rates
    for i in range(N_COINS):
        result[i] = result[i] * _balances[i] / PRECISION
    return result


@private
@constant
def get_D(A: uint256, xp: uint256[N_COINS]) -> uint256:
    S: uint256 = 0
    for _x in xp:
        S += _x
    if S == 0:
        return 0

    Dprev: uint256 = 0
    D: uint256 = S
    Ann: uint256 = A * N_COINS
    for _i in range(255):
        D_P: uint256 = D
        for _x in xp:
            D_P = D_P * D / (_x * N_COINS + 1)  # +1 is to prevent /0
        Dprev = D
        D = (Ann * S + D_P * N_COINS) * D / ((Ann - 1) * D + (N_COINS + 1) * D_P)
        # Equality with the precision of 1
        if D > Dprev:
            if D - Dprev <= 1:
                break
        else:
            if Dprev - D <= 1:
                break
    return D


@private
@constant
def get_y(A: uint256, i: int128, _xp: uint256[N_COINS], D: uint256) -> uint256:
    """
    Calculate x[i] if one reduces D from being calculated for _xp to D

    Done by solving quadratic equation iteratively.
    x_1**2 + x1 * (sum' - (A*n**n - 1) * D / (A * n**n)) = D ** (n + 1) / (n ** (2 * n) * prod' * A)
    x_1**2 + b*x_1 = c

    x_1 = (x_1**2 + c) / (2*x_1 + b)
    """
    # x in the input is converted to the same price/precision

    assert (i >= 0) and (i < N_COINS)

    c: uint256 = D
    S_: uint256 = 0
    Ann: uint256 = A * N_COINS

    _x: uint256 = 0
    for _i in range(N_COINS):
        if _i != i:
            _x = _xp[_i]
        else:
            continue
        S_ += _x
        c = c * D / (_x * N_COINS)
    c = c * D / (Ann * N_COINS)
    b: uint256 = S_ + D / Ann
    y_prev: uint256 = 0
    y: uint256 = D
    for _i in range(255):
        y_prev = y
        y = (y*y + c) / (2 * y + b - D)
        # Equality with the precision of 1
        if y > y_prev:
            if y - y_prev <= 1:
                break
        else:
            if y_prev - y <= 1:
                break
    return y


@private
@constant
def _calc_withdraw_one_coin(_token_amount: uint256, i: int128, rates: uint256[N_COINS]) -> uint256:
    # First, need to calculate
    # * Get current D
    # * Solve Eqn against y_i for D - _token_amount
    use_lending: bool[N_COINS] = USE_LENDING
    # tethered: bool[N_COINS] = TETHERED
    crv: address = self.curve
    A: uint256 = Curve(crv).A()
    fee: uint256 = Curve(crv).fee() * N_COINS / (4 * (N_COINS - 1))
    fee += fee * FEE_IMPRECISION / FEE_DENOMINATOR  # Overcharge to account for imprecision
    precisions: uint256[N_COINS] = PRECISION_MUL
    total_supply: uint256 = ERC20(self.token).totalSupply()

    xp: uint256[N_COINS] = PRECISION_MUL
    S: uint256 = 0
    for j in range(N_COINS):
        xp[j] *= Curve(crv).balances(j)
        if use_lending[j]:
            # Use stored rate b/c we have imprecision anyway
            xp[j] = xp[j] * rates[j] / LENDING_PRECISION
        S += xp[j]
        # if not use_lending - all good already

    D0: uint256 = self.get_D(A, xp)
    D1: uint256 = D0 - _token_amount * D0 / total_supply
    xp_reduced: uint256[N_COINS] = xp

    # xp = xp - fee * | xp * D1 / D0 - (xp - S * dD / D0 * (0, ... 1, ..0))|
    for j in range(N_COINS):
        dx_expected: uint256 = 0
        b_ideal: uint256 = xp[j] * D1 / D0
        b_expected: uint256 = xp[j]
        if j == i:
            b_expected -= S * (D0 - D1) / D0
        if b_ideal >= b_expected:
            dx_expected = (b_ideal - b_expected)
        else:
            dx_expected = (b_expected - b_ideal)
        xp_reduced[j] -= fee * dx_expected / FEE_DENOMINATOR

    dy: uint256 = xp_reduced[i] - self.get_y(A, i, xp_reduced, D1)
    dy = dy / precisions[i]

    return dy


@public
@constant
def calc_withdraw_one_coin(_token_amount: uint256, i: int128) -> uint256:
    rates: uint256[N_COINS] = ZEROS
    use_lending: bool[N_COINS] = USE_LENDING

    for j in range(N_COINS):
        if use_lending[j]:
            rates[j] = yERC20(self.coins[j]).getPricePerFullShare()
        else:
            rates[j] = 10 ** 18

    return self._calc_withdraw_one_coin(_token_amount, i, rates)


@public
@nonreentrant('lock')
def remove_liquidity_one_coin(_token_amount: uint256, i: int128, min_uamount: uint256, donate_dust: bool = False):
    """
    Remove _amount of liquidity all in a form of coin i
    """
    use_lending: bool[N_COINS] = USE_LENDING
    rates: uint256[N_COINS] = ZEROS
    _token: address = self.token

    for j in range(N_COINS):
        if use_lending[j]:
            rates[j] = yERC20(self.coins[j]).getPricePerFullShare()
        else:
            rates[j] = LENDING_PRECISION

    dy: uint256 = self._calc_withdraw_one_coin(_token_amount, i, rates)
    assert dy >= min_uamount, "Not enough coins removed"

    assert_modifiable(
        ERC20(self.token).transferFrom(msg.sender, self, _token_amount))

    amounts: uint256[N_COINS] = ZEROS
    amounts[i] = dy * LENDING_PRECISION / rates[i]
    token_amount_before: uint256 = ERC20(_token).balanceOf(self)
    Curve(self.curve).remove_liquidity_imbalance(amounts, _token_amount)

    # Unwrap and transfer all the coins we've got
    self._send_all(msg.sender, ZEROS, i)

    if not donate_dust:
        # Transfer unused tokens back
        token_amount_after: uint256 = ERC20(_token).balanceOf(self)
        if token_amount_after > token_amount_before:
            assert_modifiable(ERC20(_token).transfer(
                msg.sender, token_amount_after - token_amount_before)
            )


@public
@nonreentrant('lock')
def withdraw_donated_dust():
    owner: address = Curve(self.curve).owner()
    assert msg.sender == owner

    _token: address = self.token
    assert_modifiable(
        ERC20(_token).transfer(owner, ERC20(_token).balanceOf(self)))

Contract Security Audit

Contract ABI

[{"outputs":[],"inputs":[{"type":"address[4]","name":"_coins"},{"type":"address[4]","name":"_underlying_coins"},{"type":"address","name":"_curve"},{"type":"address","name":"_token"}],"constant":false,"payable":false,"type":"constructor"},{"name":"add_liquidity","outputs":[],"inputs":[{"type":"uint256[4]","name":"uamounts"},{"type":"uint256","name":"min_mint_amount"}],"constant":false,"payable":false,"type":"function","gas":165036},{"name":"remove_liquidity","outputs":[],"inputs":[{"type":"uint256","name":"_amount"},{"type":"uint256[4]","name":"min_uamounts"}],"constant":false,"payable":false,"type":"function","gas":100343},{"name":"remove_liquidity_imbalance","outputs":[],"inputs":[{"type":"uint256[4]","name":"uamounts"},{"type":"uint256","name":"max_burn_amount"}],"constant":false,"payable":false,"type":"function","gas":121298},{"name":"calc_withdraw_one_coin","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"}],"constant":true,"payable":false,"type":"function","gas":3881771},{"name":"remove_liquidity_one_coin","outputs":[],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"},{"type":"uint256","name":"min_uamount"}],"constant":false,"payable":false,"type":"function"},{"name":"remove_liquidity_one_coin","outputs":[],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"},{"type":"uint256","name":"min_uamount"},{"type":"bool","name":"donate_dust"}],"constant":false,"payable":false,"type":"function"},{"name":"withdraw_donated_dust","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":63973},{"name":"coins","outputs":[{"type":"address","name":""}],"inputs":[{"type":"int128","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":1680},{"name":"underlying_coins","outputs":[{"type":"address","name":""}],"inputs":[{"type":"int128","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":1710},{"name":"curve","outputs":[{"type":"address","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":1541},{"name":"token","outputs":[{"type":"address","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":1571}]

740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a052610140612dab6101403934156100a257600080fd5b6020612dab60c03960c05160205181106100bb57600080fd5b5060206020612dab0160c03960c05160205181106100d857600080fd5b5060206040612dab0160c03960c05160205181106100f557600080fd5b5060206060612dab0160c03960c051602051811061011257600080fd5b5060206080612dab0160c03960c051602051811061012f57600080fd5b50602060a0612dab0160c03960c051602051811061014c57600080fd5b50602060c0612dab0160c03960c051602051811061016957600080fd5b50602060e0612dab0160c03960c051602051811061018657600080fd5b506020610100612dab0160c03960c05160205181106101a457600080fd5b506020610120612dab0160c03960c05160205181106101c257600080fd5b50600060c052602060c020610140805182558060200151600183015580604001516002830155806060015160038301555050600160c052602060c0206101c08051825580602001516001830155806040015160028301558060600151600383015550506102405160025561026051600355612d9356600436101561000d57612b55565b600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a05263029b2f3460005114156107945762ffffff54156100be57600080fd5b600162ffffff5534156100d057600080fd5b61014060018152600181602001526001816040015260008160600152506101c0600081526000816020015260018160400152600081606001525061024060008152600081602001526000816040015260008160600152506102c060006004818352015b60046102c0516004811061014657600080fd5b60200201356102e05260006102e0511115610663576101c06102c0516004811061016f57600080fd5b60200201511561021b576102c0516004811061018a57600080fd5b600160c052602060c02001543b6101a057600080fd5b6102c051600481106101b157600080fd5b600160c052602060c020015430186101c857600080fd5b6000600060646323b872dd6103e052336104005230610420526102e051610440526103fc60006102c051600481106101ff57600080fd5b600160c052602060c02001545af161021657600080fd5b6102ca565b6102c0516004811061022c57600080fd5b600160c052602060c02001543b61024257600080fd5b6102c0516004811061025357600080fd5b600160c052602060c0200154301861026a57600080fd5b60206103c060646323b872dd61030052336103205230610340526102e0516103605261031c60006102c051600481106102a257600080fd5b600160c052602060c02001545af16102b957600080fd5b6000506103c0516102c957600080fd5b5b6101406102c051600481106102de57600080fd5b6020020151156105a2576102c051600481106102f957600080fd5b600160c052602060c02001543b61030f57600080fd5b6102c0516004811061032057600080fd5b600160c052602060c0200154301861033757600080fd5b6020610600604463095ea7b3610560526102c0516004811061035857600080fd5b600060c052602060c0200154610580526102e0516105a05261057c60006102c0516004811061038657600080fd5b600160c052602060c02001545af161039d57600080fd5b600050610600506102c051600481106103b557600080fd5b600060c052602060c02001543b6103cb57600080fd5b6102c051600481106103dc57600080fd5b600060c052602060c020015430186103f357600080fd5b60006000602463b6b55f25610620526102e0516106405261063c60006102c0516004811061042057600080fd5b600060c052602060c02001545af161043757600080fd5b6102c0516004811061044857600080fd5b600060c052602060c02001543b61045e57600080fd5b6102c0516004811061046f57600080fd5b600060c052602060c0200154301861048657600080fd5b602061072060246370a082316106a052306106c0526106bc6102c051600481106104af57600080fd5b600060c052602060c02001545afa6104c657600080fd5b600050610720516102406102c051600481106104e157600080fd5b60200201526102c051600481106104f757600080fd5b600060c052602060c02001543b61050d57600080fd5b6102c0516004811061051e57600080fd5b600060c052602060c0200154301861053557600080fd5b60206107e0604463095ea7b361074052600254610760526102406102c0516004811061056057600080fd5b60200201516107805261075c60006102c0516004811061057f57600080fd5b600060c052602060c02001545af161059657600080fd5b6000506107e050610662565b6102e0516102406102c051600481106105ba57600080fd5b60200201526102c051600481106105d057600080fd5b600160c052602060c02001543b6105e657600080fd5b6102c051600481106105f757600080fd5b600160c052602060c0200154301861060e57600080fd5b6020610540604463095ea7b36104a0526002546104c0526102e0516104e0526104bc60006102c0516004811061064357600080fd5b600160c052602060c02001545af161065a57600080fd5b600050610540505b5b5b8151600101808352811415610133575b50506002543b61068357600080fd5b600254301861069157600080fd5b6000600060a463029b2f34610800526108206102408051825280602001518260200152806040015182604001528060600151826060015250506084356108a05261081c60006002545af16106e457600080fd5b6003543b6106f157600080fd5b60035430186106ff57600080fd5b60206109a060246370a0823161092052306109405261093c6003545afa61072557600080fd5b6000506109a051610900526003543b61073d57600080fd5b600354301861074b57600080fd5b6020610a60604463a9059cbb6109c052336109e05261090051610a00526109dc60006003545af161077b57600080fd5b600050610a605161078b57600080fd5b600062ffffff55005b600015610acf575b610200526101405261016052610180526101a0526101c0526101e05261022060018152600181602001526001816040015260008160600152506102a0600081526000816020015260018160400152600081606001525061032060006004818352015b6101e051610320511460006101e051121715610ab657610220610320516004811061082857600080fd5b6020020151156108fa57610320516004811061084357600080fd5b600060c052602060c020015461034052610340513b61086157600080fd5b61034051301861087057600080fd5b602061040060246370a0823161038052306103a05261039c610340515afa61089757600080fd5b60005061040051610360526103605115156108b157610ab7565b610340513b6108bf57600080fd5b6103405130186108ce57600080fd5b600060006024632e1a7d4d61042052610360516104405261043c6000610340515af16108f957600080fd5b5b610320516004811061090b57600080fd5b600160c052602060c02001546104a0526104a0513b61092957600080fd5b6104a051301861093857600080fd5b602061056060246370a082316104e05230610500526104fc6104a0515afa61095f57600080fd5b600050610560516104c0526308c379a06105805260206105a052601a6105c0527f4e6f7420656e6f75676820636f696e732077697468647261776e0000000000006105e0526105c05061016061032051600481106109bc57600080fd5b60200201516104c05110156109d257608461059cfd5b60006104c051101515610ab5576102a061032051600481106109f357600080fd5b602002015115610a52576104a0513b610a0b57600080fd5b6104a0513018610a1a57600080fd5b60006000604463a9059cbb6106e05261014051610700526104c051610720526106fc60006104a0515af1610a4d57600080fd5b610ab4565b6104a0513b610a6057600080fd5b6104a0513018610a6f57600080fd5b60206106c0604463a9059cbb6106205261014051610640526104c0516106605261063c60006104a0515af1610aa357600080fd5b6000506106c051610ab357600080fd5b5b5b5b5b81516001018083528114156107fe575b505061020051565b637d49d8756000511415610cc65762ffffff5415610aec57600080fd5b600162ffffff553415610afe57600080fd5b61014060008152600081602001526000816040015260008160600152506003543b610b2857600080fd5b6003543018610b3657600080fd5b602061028060646323b872dd6101c052336101e0523061020052600435610220526101dc60006003545af1610b6a57600080fd5b60005061028051610b7a57600080fd5b6002543b610b8757600080fd5b6002543018610b9557600080fd5b6000600060a4637d49d8756102a0526004356102c0526102e06101408051825280602001518260200152806040015182604001528060600151826060015250506102bc60006002545af1610be857600080fd5b6101406103a0525b6103a0515160206103a051016103a0526103a06103a0511015610c1257610bf0565b63eb9ec6916103c052336103e05261040060248035825280602001358260200152806040013582604001528060600135826060015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104805261048051610460516104405161042051610400516103e0516006580161079c565b6103806103a0525b6103a0515260206103a051036103a0526101406103a051101515610cba57610c97565b600050600062ffffff55005b6318a7bd76600051141561116e5762ffffff5415610ce357600080fd5b600162ffffff553415610cf557600080fd5b61014060018152600181602001526001816040015260008160600152506101c060008152600081602001526001816040015260008160600152506003546102405261026060048035825280602001358260200152806040013582604001528060600135826060015250506102e060006004818352015b60006102606102e05160048110610d8157600080fd5b6020020151116101406102e05160048110610d9b57600080fd5b60200201511615610ea7576102e05160048110610db757600080fd5b600060c052602060c02001543b610dcd57600080fd5b6102e05160048110610dde57600080fd5b600060c052602060c02001543018610df557600080fd5b602061038060046377c7b8fc6103205261033c6102e05160048110610e1957600080fd5b600060c052602060c02001545afa610e3057600080fd5b60005061038051610300526102606102e05160048110610e4f57600080fd5b6020020151670de0b6b3a76400008082028215828483041417610e7157600080fd5b80905090509050610300518080610e8757600080fd5b8204905090506102606102e05160048110610ea157600080fd5b60200201525b5b8151600101808352811415610d6b575b5050610240513b610ec857600080fd5b610240513018610ed757600080fd5b602061044060246370a082316103c052336103e0526103dc610240515afa610efe57600080fd5b600050610440516103a0526084356103a0511115610f1e576084356103a0525b610240513b610f2c57600080fd5b610240513018610f3b57600080fd5b602061052060646323b872dd610460523361048052306104a0526103a0516104c05261047c6000610240515af1610f7157600080fd5b60005061052051610f8157600080fd5b6002543b610f8e57600080fd5b6002543018610f9c57600080fd5b6000600060a46318a7bd76610540526105606102608051825280602001518260200152806040015182604001528060600151826060015250506084356105e05261055c60006002545af1610fef57600080fd5b610240513b610ffd57600080fd5b61024051301861100c57600080fd5b60206106c060246370a0823161064052306106605261065c610240515afa61103357600080fd5b6000506106c0516103a052610240513b61104c57600080fd5b61024051301861105b57600080fd5b6020610780604463a9059cbb6106e05233610700526103a051610720526106fc6000610240515af161108c57600080fd5b6000506107805161109c57600080fd5b6101406107a0525b6107a0515160206107a051016107a0526107a06107a05110156110c6576110a4565b63eb9ec6916107c052336107e05261080060008152600081602001526000816040015260008160600152507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108805261088051610860516108405161082051610800516107e0516006580161079c565b6107806107a0525b6107a0515260206107a051036107a0526101406107a0511015156111625761113f565b600050600062ffffff55005b60001561129f575b610240526101405261016052610180526101a0526101c0526101e05261020052610220526102606101408051825280602001518260200152806040015182604001528060600151826060015250506102e060006004818352015b6102606102e051600481106111e457600080fd5b60200201516101c06102e051600481106111fd57600080fd5b6020020151808202821582848304141761121657600080fd5b80905090509050670de0b6b3a7640000808061123157600080fd5b8204905090506102606102e0516004811061124b57600080fd5b60200201525b81516001018083528114156111d0575b50506080610300525b60006103005111151561127c57611298565b602061030051036102600151602061030051036103005261126a565b6102405156005b6000156115a9575b6101e0526101405261016052610180526101a0526101c05260006102005261024060006004818352015b602061024051026101600151610220526102008051610220518181830110156112f957600080fd5b808201905090508152505b81516001018083528114156112d1575b505061020051151561132f5760006000526000516101e05156505b600061028052610200516102a052610140516004808202821582848304141761135757600080fd5b809050905090506102c0526102e0600060ff818352015b6102a0516103005261034060006004818352015b60206103405102610160015161032052610300516102a05180820282158284830414176113ae57600080fd5b8090509050905061032051600480820282158284830414176113cf57600080fd5b8090509050905060018181830110156113e757600080fd5b8082019050905080806113f957600080fd5b820490509050610300525b8151600101808352811415611382575b50506102a051610280526102c05161020051808202821582848304141761143a57600080fd5b80905090509050610300516004808202821582848304141761145b57600080fd5b8090509050905081818301101561147157600080fd5b808201905090506102a051808202821582848304141761149057600080fd5b809050905090506102c0516001808210156114aa57600080fd5b808203905090506102a05180820282158284830414176114c957600080fd5b8090509050905060056103005180820282158284830414176114ea57600080fd5b8090509050905081818301101561150057600080fd5b80820190509050808061151257600080fd5b8204905090506102a052610280516102a05111156115595760016102a051610280518082101561154157600080fd5b8082039050905011151561155457611595565b611584565b6001610280516102a0518082101561157057600080fd5b8082039050905011151561158357611595565b5b5b815160010180835281141561136e575b50506102a0516000526000516101e0515650005b6000156118d6575b610220526101405261016052610180526101a0526101c0526101e05261020052600461016051126000610160511215166115ea57600080fd5b6102005161024052600061026052610140516004808202821582848304141761161257600080fd5b809050905090506102805260006102a0526102c060006004818352015b610160516102c051181561165f576101806102c0516004811061165157600080fd5b60200201516102a052611664565b6116e0565b61026080516102a05181818301101561167c57600080fd5b80820190509050815250610240516102005180820282158284830414176116a257600080fd5b809050905090506102a051600480820282158284830414176116c357600080fd5b8090509050905080806116d557600080fd5b820490509050610240525b815160010180835281141561162f575b50506102405161020051808202821582848304141761170e57600080fd5b80905090509050610280516004808202821582848304141761172f57600080fd5b80905090509050808061174157600080fd5b82049050905061024052610260516102005161028051808061176257600080fd5b82049050905081818301101561177757600080fd5b808201905090506102e0526000610300526102005161032052610340600060ff818352015b6103205161030052610320516103205180820282158284830414176117c057600080fd5b80905090509050610240518181830110156117da57600080fd5b8082019050905060026103205180820282158284830414176117fb57600080fd5b809050905090506102e05181818301101561181557600080fd5b80820190509050610200518082101561182d57600080fd5b80820390509050808061183f57600080fd5b820490509050610320526103005161032051111561188657600161032051610300518082101561186e57600080fd5b80820390509050111515611881576118c2565b6118b1565b600161030051610320518082101561189d57600080fd5b808203905090501115156118b0576118c2565b5b5b815160010180835281141561179c575b505061032051600052600051610220515650005b600015612094575b610200526101405261016052610180526101a0526101c0526101e05261022060018152600181602001526001816040015260008160600152506002546102a0526102a0513b61192c57600080fd5b6102a051301861193b57600080fd5b6020610340600463f446c1d06102e0526102fc6102a0515afa61195d57600080fd5b600050610340516102c0526102a0513b61197657600080fd5b6102a051301861198557600080fd5b60206103e0600463ddca3f436103805261039c6102a0515afa6119a757600080fd5b6000506103e051600480820282158284830414176119c457600080fd5b80905090509050600c80806119d857600080fd5b82049050905061036052610360805161036051639502f9008082028215828483041417611a0457600080fd5b809050905090506402540be4008080611a1c57600080fd5b820490509050818183011015611a3157600080fd5b808201905090508152506104006001815264e8d4a51000816020015264e8d4a51000816040015260018160600152506003543b611a6d57600080fd5b6003543018611a7b57600080fd5b602061050060046318160ddd6104a0526104bc6003545afa611a9c57600080fd5b60005061050051610480526105206001815264e8d4a51000816020015264e8d4a510008160400152600181606001525060006105a0526105c060006004818352015b6105206105c05160048110611af257600080fd5b6020020180516102a0513b611b0657600080fd5b6102a0513018611b1557600080fd5b6020610660602463065a80d86105e0526105c051610600526105fc6102a0515afa611b3f57600080fd5b600050610660518082028215828483041417611b5a57600080fd5b809050905090508152506102206105c05160048110611b7857600080fd5b602002015115611c03576105206105c05160048110611b9657600080fd5b60200201516101806105c05160048110611baf57600080fd5b60200201518082028215828483041417611bc857600080fd5b80905090509050670de0b6b3a76400008080611be357600080fd5b8204905090506105206105c05160048110611bfd57600080fd5b60200201525b6105a080516105206105c05160048110611c1c57600080fd5b6020020151818183011015611c3057600080fd5b808201905090508152505b8151600101808352811415611ade575b50506101406106a0525b6106a0515160206106a051016106a0526106a06106a0511015611c7757611c55565b637b7241516106c0526102c0516106e052610700610520805182528060200151826020015280604001518260400152806060015182606001525050610760516107405161072051610700516106e051600658016112a7565b6107c0526106806106a0525b6106a0515260206106a051036106a0526101406106a051101515611cfe57611cdb565b6107c051610680526106805161014051610680518082028215828483041417611d2657600080fd5b80905090509050610480518080611d3c57600080fd5b82049050905080821015611d4f57600080fd5b808203905090506107e05261080061052080518252806020015182602001528060400151826040015280606001518260600152505061088060006004818352015b60006108a0526105206108805160048110611daa57600080fd5b60200201516107e0518082028215828483041417611dc757600080fd5b80905090509050610680518080611ddd57600080fd5b8204905090506108c0526105206108805160048110611dfb57600080fd5b60200201516108e05261016051610880511415611e7f576108e080516105a051610680516107e05180821015611e3057600080fd5b808203905090508082028215828483041417611e4b57600080fd5b80905090509050610680518080611e6157600080fd5b82049050905080821015611e7457600080fd5b808203905090508152505b6108e0516108c051101515611eb3576108c0516108e05180821015611ea357600080fd5b808203905090506108a052611ed4565b6108e0516108c05180821015611ec857600080fd5b808203905090506108a0525b6108006108805160048110611ee857600080fd5b602002018051610360516108a0518082028215828483041417611f0a57600080fd5b809050905090506402540be4008080611f2257600080fd5b82049050905080821015611f3557600080fd5b808203905090508152505b8151600101808352811415611d90575b50506108006101605160048110611f6657600080fd5b6020020151610140610920525b61092051516020610920510161092052610920610920511015611f9557611f73565b638643731f610940526102c0516109605261016051610980526109a06108008051825280602001518260200152806040015182604001528060600151826060015250506107e051610a2052610a2051610a00516109e0516109c0516109a0516109805161096051600658016115b1565b610a8052610900610920525b610920515260206109205103610920526101406109205110151561203457612011565b610a80518082101561204557600080fd5b808203905090506109005261090051610400610160516004811061206857600080fd5b6020020151808061207857600080fd5b8204905090506109005261090051600052600051610200515650005b63cc2b27d760005114156122d05734156120ad57600080fd5b606051602435806040519013156120c357600080fd5b80919012156120d157600080fd5b5061014060008152600081602001526000816040015260008160600152506101c0600181526001816020015260018160400152600081606001525061024060006004818352015b6101c0610240516004811061212c57600080fd5b6020020151156121e557610240516004811061214757600080fd5b600060c052602060c02001543b61215d57600080fd5b610240516004811061216e57600080fd5b600060c052602060c0200154301861218557600080fd5b60206102c060046377c7b8fc6102605261027c61024051600481106121a957600080fd5b600060c052602060c02001545afa6121c057600080fd5b6000506102c05161014061024051600481106121db57600080fd5b6020020152612208565b670de0b6b3a7640000610140610240516004811061220257600080fd5b60200201525b5b8151600101808352811415612118575b50506101405161016051610180516101a0516101c0516101e051610200516102205163800c1cbc6103005260043561032052602435610340526103606101408051825280602001518260200152806040015182604001528060600151826060015250506103c0516103a05161038051610360516103405161032051600658016118de565b6104205261022052610200526101e0526101c0526101a0526101805261016052610140526104205160005260206000f350005b631a4d01d260005114156122e95760006101405261231f565b63517a55a36000511415612317576064356002811061230757600080fd5b602060646101403760005061231f565b6000156128ff575b62ffffff541561232e57600080fd5b600162ffffff55341561234057600080fd5b6060516024358060405190131561235657600080fd5b809190121561236457600080fd5b5061016060018152600181602001526001816040015260008160600152506101e060008152600081602001526000816040015260008160600152506003546102605261028060006004818352015b61016061028051600481106123c657600080fd5b60200201511561247f5761028051600481106123e157600080fd5b600060c052602060c02001543b6123f757600080fd5b610280516004811061240857600080fd5b600060c052602060c0200154301861241f57600080fd5b602061030060046377c7b8fc6102a0526102bc610280516004811061244357600080fd5b600060c052602060c02001545afa61245a57600080fd5b600050610300516101e0610280516004811061247557600080fd5b60200201526124a2565b670de0b6b3a76400006101e0610280516004811061249c57600080fd5b60200201525b5b81516001018083528114156123b2575b5050610140610340525b610340515160206103405101610340526103406103405110156124df576124bd565b63800c1cbc61036052600435610380526024356103a0526103c06101e080518252806020015182602001528060400151826040015280606001518260600152505061042051610400516103e0516103c0516103a05161038051600658016118de565b61048052610320610340525b61034051526020610340510361034052610140610340511015156125705761254d565b61048051610320526308c379a06104a05260206104c05260186104e0527f4e6f7420656e6f75676820636f696e732072656d6f7665640000000000000000610500526104e0506044356103205110156125ca5760846104bcfd5b6003543b6125d757600080fd5b60035430186125e557600080fd5b602061060060646323b872dd61054052336105605230610580526004356105a05261055c60006003545af161261957600080fd5b6000506106005161262957600080fd5b610620600081526000816020015260008160400152600081606001525061032051670de0b6b3a7640000808202821582848304141761266757600080fd5b809050905090506101e06024356004811061268157600080fd5b6020020151808061269157600080fd5b820490509050610620602435600481106126aa57600080fd5b6020020152610260513b6126bd57600080fd5b6102605130186126cc57600080fd5b602061074060246370a082316106c052306106e0526106dc610260515afa6126f357600080fd5b600050610740516106a0526002543b61270b57600080fd5b600254301861271957600080fd5b6000600060a46318a7bd76610760526107806106208051825280602001518260200152806040015182604001528060600151826060015250506004356108005261077c60006002545af161276c57600080fd5b610140610860525b6108605151602061086051016108605261086061086051101561279657612774565b63eb9ec69161088052336108a0526108c06000815260008160200152600081604001526000816060015250602435610940526109405161092051610900516108e0516108c0516108a0516006580161079c565b610840610860525b6108605152602061086051036108605261014061086051101515612814576127f1565b6000506101405115156128f657610260513b61282f57600080fd5b61026051301861283e57600080fd5b6020610a4060246370a082316109c052306109e0526109dc610260515afa61286557600080fd5b600050610a40516109a0526106a0516109a05111156128f557610260513b61288c57600080fd5b61026051301861289b57600080fd5b6020610b00604463a9059cbb610a605233610a80526109a0516106a051808210156128c557600080fd5b80820390509050610aa052610a7c6000610260515af16128e457600080fd5b600050610b00516128f457600080fd5b5b5b600062ffffff55005b636c956a546000511415612a3c5762ffffff541561291c57600080fd5b600162ffffff55341561292e57600080fd5b6002543b61293b57600080fd5b600254301861294957600080fd5b60206101c06004638da5cb5b6101605261017c6002545afa61296a57600080fd5b6000506101c0516101405261014051331461298457600080fd5b6003546101e0526101e0513b61299957600080fd5b6101e05130186129a857600080fd5b6020610340604463a9059cbb6102a052610140516102c0526101e0513b6129ce57600080fd5b6101e05130186129dd57600080fd5b602061028060246370a0823161020052306102205261021c6101e0515afa612a0457600080fd5b600050610280516102e0526102bc60006101e0515af1612a2357600080fd5b60005061034051612a3357600080fd5b600062ffffff55005b6323746eb86000511415612aa1573415612a5557600080fd5b60605160043580604051901315612a6b57600080fd5b8091901215612a7957600080fd5b5060043560048110612a8a57600080fd5b600060c052602060c020015460005260206000f350005b63b739953e6000511415612b06573415612aba57600080fd5b60605160043580604051901315612ad057600080fd5b8091901215612ade57600080fd5b5060043560048110612aef57600080fd5b600160c052602060c020015460005260206000f350005b637165485d6000511415612b2d573415612b1f57600080fd5b60025460005260206000f350005b63fc0c546a6000511415612b54573415612b4657600080fd5b60035460005260206000f350005b5b60006000fd5b610238612d9303610238600039610238612d93036000f300000000000000000000000099d1fa417f94dcd62bfe781a1213c092a47041bc0000000000000000000000009777d7e2b60bb01759d0e2f8be2095df444cb07e0000000000000000000000001be5d71f2da660bfdee8012ddc58d024448a0a590000000000000000000000008e870d67f660d95d5be530380d0ec0bd388289e10000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000008e870d67f660d95d5be530380d0ec0bd388289e100000000000000000000000006364f10b501e868329afbc005b3492902d6c763000000000000000000000000d905e2eaebe188fc92179b6350807d8bd91db0d8

Deployed Bytecode

0x600436101561000d57612b55565b600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a05263029b2f3460005114156107945762ffffff54156100be57600080fd5b600162ffffff5534156100d057600080fd5b61014060018152600181602001526001816040015260008160600152506101c0600081526000816020015260018160400152600081606001525061024060008152600081602001526000816040015260008160600152506102c060006004818352015b60046102c0516004811061014657600080fd5b60200201356102e05260006102e0511115610663576101c06102c0516004811061016f57600080fd5b60200201511561021b576102c0516004811061018a57600080fd5b600160c052602060c02001543b6101a057600080fd5b6102c051600481106101b157600080fd5b600160c052602060c020015430186101c857600080fd5b6000600060646323b872dd6103e052336104005230610420526102e051610440526103fc60006102c051600481106101ff57600080fd5b600160c052602060c02001545af161021657600080fd5b6102ca565b6102c0516004811061022c57600080fd5b600160c052602060c02001543b61024257600080fd5b6102c0516004811061025357600080fd5b600160c052602060c0200154301861026a57600080fd5b60206103c060646323b872dd61030052336103205230610340526102e0516103605261031c60006102c051600481106102a257600080fd5b600160c052602060c02001545af16102b957600080fd5b6000506103c0516102c957600080fd5b5b6101406102c051600481106102de57600080fd5b6020020151156105a2576102c051600481106102f957600080fd5b600160c052602060c02001543b61030f57600080fd5b6102c0516004811061032057600080fd5b600160c052602060c0200154301861033757600080fd5b6020610600604463095ea7b3610560526102c0516004811061035857600080fd5b600060c052602060c0200154610580526102e0516105a05261057c60006102c0516004811061038657600080fd5b600160c052602060c02001545af161039d57600080fd5b600050610600506102c051600481106103b557600080fd5b600060c052602060c02001543b6103cb57600080fd5b6102c051600481106103dc57600080fd5b600060c052602060c020015430186103f357600080fd5b60006000602463b6b55f25610620526102e0516106405261063c60006102c0516004811061042057600080fd5b600060c052602060c02001545af161043757600080fd5b6102c0516004811061044857600080fd5b600060c052602060c02001543b61045e57600080fd5b6102c0516004811061046f57600080fd5b600060c052602060c0200154301861048657600080fd5b602061072060246370a082316106a052306106c0526106bc6102c051600481106104af57600080fd5b600060c052602060c02001545afa6104c657600080fd5b600050610720516102406102c051600481106104e157600080fd5b60200201526102c051600481106104f757600080fd5b600060c052602060c02001543b61050d57600080fd5b6102c0516004811061051e57600080fd5b600060c052602060c0200154301861053557600080fd5b60206107e0604463095ea7b361074052600254610760526102406102c0516004811061056057600080fd5b60200201516107805261075c60006102c0516004811061057f57600080fd5b600060c052602060c02001545af161059657600080fd5b6000506107e050610662565b6102e0516102406102c051600481106105ba57600080fd5b60200201526102c051600481106105d057600080fd5b600160c052602060c02001543b6105e657600080fd5b6102c051600481106105f757600080fd5b600160c052602060c0200154301861060e57600080fd5b6020610540604463095ea7b36104a0526002546104c0526102e0516104e0526104bc60006102c0516004811061064357600080fd5b600160c052602060c02001545af161065a57600080fd5b600050610540505b5b5b8151600101808352811415610133575b50506002543b61068357600080fd5b600254301861069157600080fd5b6000600060a463029b2f34610800526108206102408051825280602001518260200152806040015182604001528060600151826060015250506084356108a05261081c60006002545af16106e457600080fd5b6003543b6106f157600080fd5b60035430186106ff57600080fd5b60206109a060246370a0823161092052306109405261093c6003545afa61072557600080fd5b6000506109a051610900526003543b61073d57600080fd5b600354301861074b57600080fd5b6020610a60604463a9059cbb6109c052336109e05261090051610a00526109dc60006003545af161077b57600080fd5b600050610a605161078b57600080fd5b600062ffffff55005b600015610acf575b610200526101405261016052610180526101a0526101c0526101e05261022060018152600181602001526001816040015260008160600152506102a0600081526000816020015260018160400152600081606001525061032060006004818352015b6101e051610320511460006101e051121715610ab657610220610320516004811061082857600080fd5b6020020151156108fa57610320516004811061084357600080fd5b600060c052602060c020015461034052610340513b61086157600080fd5b61034051301861087057600080fd5b602061040060246370a0823161038052306103a05261039c610340515afa61089757600080fd5b60005061040051610360526103605115156108b157610ab7565b610340513b6108bf57600080fd5b6103405130186108ce57600080fd5b600060006024632e1a7d4d61042052610360516104405261043c6000610340515af16108f957600080fd5b5b610320516004811061090b57600080fd5b600160c052602060c02001546104a0526104a0513b61092957600080fd5b6104a051301861093857600080fd5b602061056060246370a082316104e05230610500526104fc6104a0515afa61095f57600080fd5b600050610560516104c0526308c379a06105805260206105a052601a6105c0527f4e6f7420656e6f75676820636f696e732077697468647261776e0000000000006105e0526105c05061016061032051600481106109bc57600080fd5b60200201516104c05110156109d257608461059cfd5b60006104c051101515610ab5576102a061032051600481106109f357600080fd5b602002015115610a52576104a0513b610a0b57600080fd5b6104a0513018610a1a57600080fd5b60006000604463a9059cbb6106e05261014051610700526104c051610720526106fc60006104a0515af1610a4d57600080fd5b610ab4565b6104a0513b610a6057600080fd5b6104a0513018610a6f57600080fd5b60206106c0604463a9059cbb6106205261014051610640526104c0516106605261063c60006104a0515af1610aa357600080fd5b6000506106c051610ab357600080fd5b5b5b5b5b81516001018083528114156107fe575b505061020051565b637d49d8756000511415610cc65762ffffff5415610aec57600080fd5b600162ffffff553415610afe57600080fd5b61014060008152600081602001526000816040015260008160600152506003543b610b2857600080fd5b6003543018610b3657600080fd5b602061028060646323b872dd6101c052336101e0523061020052600435610220526101dc60006003545af1610b6a57600080fd5b60005061028051610b7a57600080fd5b6002543b610b8757600080fd5b6002543018610b9557600080fd5b6000600060a4637d49d8756102a0526004356102c0526102e06101408051825280602001518260200152806040015182604001528060600151826060015250506102bc60006002545af1610be857600080fd5b6101406103a0525b6103a0515160206103a051016103a0526103a06103a0511015610c1257610bf0565b63eb9ec6916103c052336103e05261040060248035825280602001358260200152806040013582604001528060600135826060015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104805261048051610460516104405161042051610400516103e0516006580161079c565b6103806103a0525b6103a0515260206103a051036103a0526101406103a051101515610cba57610c97565b600050600062ffffff55005b6318a7bd76600051141561116e5762ffffff5415610ce357600080fd5b600162ffffff553415610cf557600080fd5b61014060018152600181602001526001816040015260008160600152506101c060008152600081602001526001816040015260008160600152506003546102405261026060048035825280602001358260200152806040013582604001528060600135826060015250506102e060006004818352015b60006102606102e05160048110610d8157600080fd5b6020020151116101406102e05160048110610d9b57600080fd5b60200201511615610ea7576102e05160048110610db757600080fd5b600060c052602060c02001543b610dcd57600080fd5b6102e05160048110610dde57600080fd5b600060c052602060c02001543018610df557600080fd5b602061038060046377c7b8fc6103205261033c6102e05160048110610e1957600080fd5b600060c052602060c02001545afa610e3057600080fd5b60005061038051610300526102606102e05160048110610e4f57600080fd5b6020020151670de0b6b3a76400008082028215828483041417610e7157600080fd5b80905090509050610300518080610e8757600080fd5b8204905090506102606102e05160048110610ea157600080fd5b60200201525b5b8151600101808352811415610d6b575b5050610240513b610ec857600080fd5b610240513018610ed757600080fd5b602061044060246370a082316103c052336103e0526103dc610240515afa610efe57600080fd5b600050610440516103a0526084356103a0511115610f1e576084356103a0525b610240513b610f2c57600080fd5b610240513018610f3b57600080fd5b602061052060646323b872dd610460523361048052306104a0526103a0516104c05261047c6000610240515af1610f7157600080fd5b60005061052051610f8157600080fd5b6002543b610f8e57600080fd5b6002543018610f9c57600080fd5b6000600060a46318a7bd76610540526105606102608051825280602001518260200152806040015182604001528060600151826060015250506084356105e05261055c60006002545af1610fef57600080fd5b610240513b610ffd57600080fd5b61024051301861100c57600080fd5b60206106c060246370a0823161064052306106605261065c610240515afa61103357600080fd5b6000506106c0516103a052610240513b61104c57600080fd5b61024051301861105b57600080fd5b6020610780604463a9059cbb6106e05233610700526103a051610720526106fc6000610240515af161108c57600080fd5b6000506107805161109c57600080fd5b6101406107a0525b6107a0515160206107a051016107a0526107a06107a05110156110c6576110a4565b63eb9ec6916107c052336107e05261080060008152600081602001526000816040015260008160600152507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108805261088051610860516108405161082051610800516107e0516006580161079c565b6107806107a0525b6107a0515260206107a051036107a0526101406107a0511015156111625761113f565b600050600062ffffff55005b60001561129f575b610240526101405261016052610180526101a0526101c0526101e05261020052610220526102606101408051825280602001518260200152806040015182604001528060600151826060015250506102e060006004818352015b6102606102e051600481106111e457600080fd5b60200201516101c06102e051600481106111fd57600080fd5b6020020151808202821582848304141761121657600080fd5b80905090509050670de0b6b3a7640000808061123157600080fd5b8204905090506102606102e0516004811061124b57600080fd5b60200201525b81516001018083528114156111d0575b50506080610300525b60006103005111151561127c57611298565b602061030051036102600151602061030051036103005261126a565b6102405156005b6000156115a9575b6101e0526101405261016052610180526101a0526101c05260006102005261024060006004818352015b602061024051026101600151610220526102008051610220518181830110156112f957600080fd5b808201905090508152505b81516001018083528114156112d1575b505061020051151561132f5760006000526000516101e05156505b600061028052610200516102a052610140516004808202821582848304141761135757600080fd5b809050905090506102c0526102e0600060ff818352015b6102a0516103005261034060006004818352015b60206103405102610160015161032052610300516102a05180820282158284830414176113ae57600080fd5b8090509050905061032051600480820282158284830414176113cf57600080fd5b8090509050905060018181830110156113e757600080fd5b8082019050905080806113f957600080fd5b820490509050610300525b8151600101808352811415611382575b50506102a051610280526102c05161020051808202821582848304141761143a57600080fd5b80905090509050610300516004808202821582848304141761145b57600080fd5b8090509050905081818301101561147157600080fd5b808201905090506102a051808202821582848304141761149057600080fd5b809050905090506102c0516001808210156114aa57600080fd5b808203905090506102a05180820282158284830414176114c957600080fd5b8090509050905060056103005180820282158284830414176114ea57600080fd5b8090509050905081818301101561150057600080fd5b80820190509050808061151257600080fd5b8204905090506102a052610280516102a05111156115595760016102a051610280518082101561154157600080fd5b8082039050905011151561155457611595565b611584565b6001610280516102a0518082101561157057600080fd5b8082039050905011151561158357611595565b5b5b815160010180835281141561136e575b50506102a0516000526000516101e0515650005b6000156118d6575b610220526101405261016052610180526101a0526101c0526101e05261020052600461016051126000610160511215166115ea57600080fd5b6102005161024052600061026052610140516004808202821582848304141761161257600080fd5b809050905090506102805260006102a0526102c060006004818352015b610160516102c051181561165f576101806102c0516004811061165157600080fd5b60200201516102a052611664565b6116e0565b61026080516102a05181818301101561167c57600080fd5b80820190509050815250610240516102005180820282158284830414176116a257600080fd5b809050905090506102a051600480820282158284830414176116c357600080fd5b8090509050905080806116d557600080fd5b820490509050610240525b815160010180835281141561162f575b50506102405161020051808202821582848304141761170e57600080fd5b80905090509050610280516004808202821582848304141761172f57600080fd5b80905090509050808061174157600080fd5b82049050905061024052610260516102005161028051808061176257600080fd5b82049050905081818301101561177757600080fd5b808201905090506102e0526000610300526102005161032052610340600060ff818352015b6103205161030052610320516103205180820282158284830414176117c057600080fd5b80905090509050610240518181830110156117da57600080fd5b8082019050905060026103205180820282158284830414176117fb57600080fd5b809050905090506102e05181818301101561181557600080fd5b80820190509050610200518082101561182d57600080fd5b80820390509050808061183f57600080fd5b820490509050610320526103005161032051111561188657600161032051610300518082101561186e57600080fd5b80820390509050111515611881576118c2565b6118b1565b600161030051610320518082101561189d57600080fd5b808203905090501115156118b0576118c2565b5b5b815160010180835281141561179c575b505061032051600052600051610220515650005b600015612094575b610200526101405261016052610180526101a0526101c0526101e05261022060018152600181602001526001816040015260008160600152506002546102a0526102a0513b61192c57600080fd5b6102a051301861193b57600080fd5b6020610340600463f446c1d06102e0526102fc6102a0515afa61195d57600080fd5b600050610340516102c0526102a0513b61197657600080fd5b6102a051301861198557600080fd5b60206103e0600463ddca3f436103805261039c6102a0515afa6119a757600080fd5b6000506103e051600480820282158284830414176119c457600080fd5b80905090509050600c80806119d857600080fd5b82049050905061036052610360805161036051639502f9008082028215828483041417611a0457600080fd5b809050905090506402540be4008080611a1c57600080fd5b820490509050818183011015611a3157600080fd5b808201905090508152506104006001815264e8d4a51000816020015264e8d4a51000816040015260018160600152506003543b611a6d57600080fd5b6003543018611a7b57600080fd5b602061050060046318160ddd6104a0526104bc6003545afa611a9c57600080fd5b60005061050051610480526105206001815264e8d4a51000816020015264e8d4a510008160400152600181606001525060006105a0526105c060006004818352015b6105206105c05160048110611af257600080fd5b6020020180516102a0513b611b0657600080fd5b6102a0513018611b1557600080fd5b6020610660602463065a80d86105e0526105c051610600526105fc6102a0515afa611b3f57600080fd5b600050610660518082028215828483041417611b5a57600080fd5b809050905090508152506102206105c05160048110611b7857600080fd5b602002015115611c03576105206105c05160048110611b9657600080fd5b60200201516101806105c05160048110611baf57600080fd5b60200201518082028215828483041417611bc857600080fd5b80905090509050670de0b6b3a76400008080611be357600080fd5b8204905090506105206105c05160048110611bfd57600080fd5b60200201525b6105a080516105206105c05160048110611c1c57600080fd5b6020020151818183011015611c3057600080fd5b808201905090508152505b8151600101808352811415611ade575b50506101406106a0525b6106a0515160206106a051016106a0526106a06106a0511015611c7757611c55565b637b7241516106c0526102c0516106e052610700610520805182528060200151826020015280604001518260400152806060015182606001525050610760516107405161072051610700516106e051600658016112a7565b6107c0526106806106a0525b6106a0515260206106a051036106a0526101406106a051101515611cfe57611cdb565b6107c051610680526106805161014051610680518082028215828483041417611d2657600080fd5b80905090509050610480518080611d3c57600080fd5b82049050905080821015611d4f57600080fd5b808203905090506107e05261080061052080518252806020015182602001528060400151826040015280606001518260600152505061088060006004818352015b60006108a0526105206108805160048110611daa57600080fd5b60200201516107e0518082028215828483041417611dc757600080fd5b80905090509050610680518080611ddd57600080fd5b8204905090506108c0526105206108805160048110611dfb57600080fd5b60200201516108e05261016051610880511415611e7f576108e080516105a051610680516107e05180821015611e3057600080fd5b808203905090508082028215828483041417611e4b57600080fd5b80905090509050610680518080611e6157600080fd5b82049050905080821015611e7457600080fd5b808203905090508152505b6108e0516108c051101515611eb3576108c0516108e05180821015611ea357600080fd5b808203905090506108a052611ed4565b6108e0516108c05180821015611ec857600080fd5b808203905090506108a0525b6108006108805160048110611ee857600080fd5b602002018051610360516108a0518082028215828483041417611f0a57600080fd5b809050905090506402540be4008080611f2257600080fd5b82049050905080821015611f3557600080fd5b808203905090508152505b8151600101808352811415611d90575b50506108006101605160048110611f6657600080fd5b6020020151610140610920525b61092051516020610920510161092052610920610920511015611f9557611f73565b638643731f610940526102c0516109605261016051610980526109a06108008051825280602001518260200152806040015182604001528060600151826060015250506107e051610a2052610a2051610a00516109e0516109c0516109a0516109805161096051600658016115b1565b610a8052610900610920525b610920515260206109205103610920526101406109205110151561203457612011565b610a80518082101561204557600080fd5b808203905090506109005261090051610400610160516004811061206857600080fd5b6020020151808061207857600080fd5b8204905090506109005261090051600052600051610200515650005b63cc2b27d760005114156122d05734156120ad57600080fd5b606051602435806040519013156120c357600080fd5b80919012156120d157600080fd5b5061014060008152600081602001526000816040015260008160600152506101c0600181526001816020015260018160400152600081606001525061024060006004818352015b6101c0610240516004811061212c57600080fd5b6020020151156121e557610240516004811061214757600080fd5b600060c052602060c02001543b61215d57600080fd5b610240516004811061216e57600080fd5b600060c052602060c0200154301861218557600080fd5b60206102c060046377c7b8fc6102605261027c61024051600481106121a957600080fd5b600060c052602060c02001545afa6121c057600080fd5b6000506102c05161014061024051600481106121db57600080fd5b6020020152612208565b670de0b6b3a7640000610140610240516004811061220257600080fd5b60200201525b5b8151600101808352811415612118575b50506101405161016051610180516101a0516101c0516101e051610200516102205163800c1cbc6103005260043561032052602435610340526103606101408051825280602001518260200152806040015182604001528060600151826060015250506103c0516103a05161038051610360516103405161032051600658016118de565b6104205261022052610200526101e0526101c0526101a0526101805261016052610140526104205160005260206000f350005b631a4d01d260005114156122e95760006101405261231f565b63517a55a36000511415612317576064356002811061230757600080fd5b602060646101403760005061231f565b6000156128ff575b62ffffff541561232e57600080fd5b600162ffffff55341561234057600080fd5b6060516024358060405190131561235657600080fd5b809190121561236457600080fd5b5061016060018152600181602001526001816040015260008160600152506101e060008152600081602001526000816040015260008160600152506003546102605261028060006004818352015b61016061028051600481106123c657600080fd5b60200201511561247f5761028051600481106123e157600080fd5b600060c052602060c02001543b6123f757600080fd5b610280516004811061240857600080fd5b600060c052602060c0200154301861241f57600080fd5b602061030060046377c7b8fc6102a0526102bc610280516004811061244357600080fd5b600060c052602060c02001545afa61245a57600080fd5b600050610300516101e0610280516004811061247557600080fd5b60200201526124a2565b670de0b6b3a76400006101e0610280516004811061249c57600080fd5b60200201525b5b81516001018083528114156123b2575b5050610140610340525b610340515160206103405101610340526103406103405110156124df576124bd565b63800c1cbc61036052600435610380526024356103a0526103c06101e080518252806020015182602001528060400151826040015280606001518260600152505061042051610400516103e0516103c0516103a05161038051600658016118de565b61048052610320610340525b61034051526020610340510361034052610140610340511015156125705761254d565b61048051610320526308c379a06104a05260206104c05260186104e0527f4e6f7420656e6f75676820636f696e732072656d6f7665640000000000000000610500526104e0506044356103205110156125ca5760846104bcfd5b6003543b6125d757600080fd5b60035430186125e557600080fd5b602061060060646323b872dd61054052336105605230610580526004356105a05261055c60006003545af161261957600080fd5b6000506106005161262957600080fd5b610620600081526000816020015260008160400152600081606001525061032051670de0b6b3a7640000808202821582848304141761266757600080fd5b809050905090506101e06024356004811061268157600080fd5b6020020151808061269157600080fd5b820490509050610620602435600481106126aa57600080fd5b6020020152610260513b6126bd57600080fd5b6102605130186126cc57600080fd5b602061074060246370a082316106c052306106e0526106dc610260515afa6126f357600080fd5b600050610740516106a0526002543b61270b57600080fd5b600254301861271957600080fd5b6000600060a46318a7bd76610760526107806106208051825280602001518260200152806040015182604001528060600151826060015250506004356108005261077c60006002545af161276c57600080fd5b610140610860525b6108605151602061086051016108605261086061086051101561279657612774565b63eb9ec69161088052336108a0526108c06000815260008160200152600081604001526000816060015250602435610940526109405161092051610900516108e0516108c0516108a0516006580161079c565b610840610860525b6108605152602061086051036108605261014061086051101515612814576127f1565b6000506101405115156128f657610260513b61282f57600080fd5b61026051301861283e57600080fd5b6020610a4060246370a082316109c052306109e0526109dc610260515afa61286557600080fd5b600050610a40516109a0526106a0516109a05111156128f557610260513b61288c57600080fd5b61026051301861289b57600080fd5b6020610b00604463a9059cbb610a605233610a80526109a0516106a051808210156128c557600080fd5b80820390509050610aa052610a7c6000610260515af16128e457600080fd5b600050610b00516128f457600080fd5b5b5b600062ffffff55005b636c956a546000511415612a3c5762ffffff541561291c57600080fd5b600162ffffff55341561292e57600080fd5b6002543b61293b57600080fd5b600254301861294957600080fd5b60206101c06004638da5cb5b6101605261017c6002545afa61296a57600080fd5b6000506101c0516101405261014051331461298457600080fd5b6003546101e0526101e0513b61299957600080fd5b6101e05130186129a857600080fd5b6020610340604463a9059cbb6102a052610140516102c0526101e0513b6129ce57600080fd5b6101e05130186129dd57600080fd5b602061028060246370a0823161020052306102205261021c6101e0515afa612a0457600080fd5b600050610280516102e0526102bc60006101e0515af1612a2357600080fd5b60005061034051612a3357600080fd5b600062ffffff55005b6323746eb86000511415612aa1573415612a5557600080fd5b60605160043580604051901315612a6b57600080fd5b8091901215612a7957600080fd5b5060043560048110612a8a57600080fd5b600060c052602060c020015460005260206000f350005b63b739953e6000511415612b06573415612aba57600080fd5b60605160043580604051901315612ad057600080fd5b8091901215612ade57600080fd5b5060043560048110612aef57600080fd5b600160c052602060c020015460005260206000f350005b637165485d6000511415612b2d573415612b1f57600080fd5b60025460005260206000f350005b63fc0c546a6000511415612b54573415612b4657600080fd5b60035460005260206000f350005b5b60006000fd

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

00000000000000000000000099d1fa417f94dcd62bfe781a1213c092a47041bc0000000000000000000000009777d7e2b60bb01759d0e2f8be2095df444cb07e0000000000000000000000001be5d71f2da660bfdee8012ddc58d024448a0a590000000000000000000000008e870d67f660d95d5be530380d0ec0bd388289e10000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000008e870d67f660d95d5be530380d0ec0bd388289e100000000000000000000000006364f10b501e868329afbc005b3492902d6c763000000000000000000000000d905e2eaebe188fc92179b6350807d8bd91db0d8

-----Decoded View---------------
Arg [0] : _coins (address[4]): 0x99d1Fa417f94dcD62BfE781a1213c092a47041Bc,0x9777d7E2b60bB01759D0E2f8be2095df444cb07E,0x1bE5d71F2dA660BFdee8012dDc58D024448A0A59,0x8E870D67F660D95d5be530380D0eC0bd388289E1
Arg [1] : _underlying_coins (address[4]): 0x6B175474E89094C44Da98b954EedeAC495271d0F,0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,0xdAC17F958D2ee523a2206206994597C13D831ec7,0x8E870D67F660D95d5be530380D0eC0bd388289E1
Arg [2] : _curve (address): 0x06364f10B501e868329afBc005b3492902d6C763
Arg [3] : _token (address): 0xD905e2eaeBe188fc92179b6350807D8bd91Db0D8

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 00000000000000000000000099d1fa417f94dcd62bfe781a1213c092a47041bc
Arg [1] : 0000000000000000000000009777d7e2b60bb01759d0e2f8be2095df444cb07e
Arg [2] : 0000000000000000000000001be5d71f2da660bfdee8012ddc58d024448a0a59
Arg [3] : 0000000000000000000000008e870d67f660d95d5be530380d0ec0bd388289e1
Arg [4] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Arg [5] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [6] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [7] : 0000000000000000000000008e870d67f660d95d5be530380d0ec0bd388289e1
Arg [8] : 00000000000000000000000006364f10b501e868329afbc005b3492902d6c763
Arg [9] : 000000000000000000000000d905e2eaebe188fc92179b6350807d8bd91db0d8


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Curve.fi's PAX deposit address.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.