More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 138,583 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Remove_liquidity | 132099073 | 41 mins ago | IN | 0 ETH | 0.000000596721 | ||||
Remove_liquidity... | 132066094 | 19 hrs ago | IN | 0 ETH | 0.000000204629 | ||||
Remove_liquidity... | 132063856 | 20 hrs ago | IN | 0 ETH | 0.000000501683 | ||||
Remove_liquidity... | 132062441 | 21 hrs ago | IN | 0 ETH | 0.000000673514 | ||||
Remove_liquidity... | 132049757 | 28 hrs ago | IN | 0 ETH | 0.000000226797 | ||||
Remove_liquidity... | 132043513 | 31 hrs ago | IN | 0 ETH | 0.000000254101 | ||||
Remove_liquidity... | 132013244 | 2 days ago | IN | 0 ETH | 0.000000238588 | ||||
Remove_liquidity... | 132011858 | 2 days ago | IN | 0 ETH | 0.000000030359 | ||||
Remove_liquidity... | 132009703 | 2 days ago | IN | 0 ETH | 0.000000248361 | ||||
Remove_liquidity... | 131983360 | 2 days ago | IN | 0 ETH | 0.000000246781 | ||||
Remove_liquidity... | 131982236 | 2 days ago | IN | 0 ETH | 0.000000328238 | ||||
Add_liquidity | 131972116 | 2 days ago | IN | 0 ETH | 0.000001357485 | ||||
Remove_liquidity... | 131970577 | 3 days ago | IN | 0 ETH | 0.000000356438 | ||||
Remove_liquidity... | 131962886 | 3 days ago | IN | 0 ETH | 0.000001224589 | ||||
Remove_liquidity... | 131961282 | 3 days ago | IN | 0 ETH | 0.000000933141 | ||||
Remove_liquidity... | 131961152 | 3 days ago | IN | 0 ETH | 0.000000774271 | ||||
Add_liquidity | 131926935 | 4 days ago | IN | 0 ETH | 0.000000804777 | ||||
Remove_liquidity... | 131921535 | 4 days ago | IN | 0 ETH | 0.000001138967 | ||||
Remove_liquidity | 131918130 | 4 days ago | IN | 0 ETH | 0.000001393392 | ||||
Remove_liquidity | 131915823 | 4 days ago | IN | 0 ETH | 0.00000214835 | ||||
Add_liquidity | 131914322 | 4 days ago | IN | 0 ETH | 0.000000927028 | ||||
Remove_liquidity | 131914183 | 4 days ago | IN | 0 ETH | 0.000001289481 | ||||
Remove_liquidity | 131914013 | 4 days ago | IN | 0 ETH | 0.000001109634 | ||||
Remove_liquidity... | 131913430 | 4 days ago | IN | 0 ETH | 0.000000565119 | ||||
Remove_liquidity | 131904717 | 4 days ago | IN | 0 ETH | 0.000000474026 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
107555655 | 568 days ago | 0 ETH | ||||
107555655 | 568 days ago | 0 ETH | ||||
107555655 | 568 days ago | 0 ETH | ||||
107555655 | 568 days ago | 0 ETH | ||||
107555655 | 568 days ago | 0 ETH | ||||
107555280 | 568 days ago | 0 ETH | ||||
107555280 | 568 days ago | 0 ETH | ||||
107555280 | 568 days ago | 0 ETH | ||||
107555280 | 568 days ago | 0 ETH | ||||
107555280 | 568 days ago | 0 ETH | ||||
107555280 | 568 days ago | 0 ETH | ||||
107555280 | 568 days ago | 0 ETH | ||||
107555280 | 568 days ago | 0 ETH | ||||
107555280 | 568 days ago | 0 ETH | ||||
107555280 | 568 days ago | 0 ETH | ||||
107555181 | 568 days ago | 0 ETH | ||||
107555181 | 568 days ago | 0 ETH | ||||
107555181 | 568 days ago | 0 ETH | ||||
107555181 | 568 days ago | 0 ETH | ||||
107555181 | 568 days ago | 0 ETH | ||||
107553907 | 568 days ago | 0 ETH | ||||
107553907 | 568 days ago | 0 ETH | ||||
107553907 | 568 days ago | 0 ETH | ||||
107553907 | 568 days ago | 0 ETH | ||||
107553907 | 568 days ago | 0 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.3.1
Contract Source Code (Vyper language format)
# @version 0.3.1 """ @title "Zap" Depositer for permissionless factory metapools @author Curve.Fi @license Copyright (c) Curve.Fi, 2021 - all rights reserved """ interface ERC20: def approve(_spender: address, _amount: uint256): nonpayable def balanceOf(_owner: address) -> uint256: view interface CurveMeta: def add_liquidity(amounts: uint256[N_COINS], min_mint_amount: uint256, _receiver: address) -> uint256: nonpayable def remove_liquidity(_amount: uint256, min_amounts: uint256[N_COINS]): nonpayable def remove_liquidity_one_coin(_token_amount: uint256, i: int128, min_amount: uint256, _receiver: address) -> uint256: nonpayable def remove_liquidity_imbalance(amounts: uint256[N_COINS], max_burn_amount: uint256) -> uint256: nonpayable def calc_withdraw_one_coin(_token_amount: uint256, i: int128) -> uint256: view def calc_token_amount(amounts: uint256[N_COINS], deposit: bool) -> uint256: view def coins(i: uint256) -> address: view interface CurveBase: def add_liquidity(amounts: uint256[BASE_N_COINS], min_mint_amount: uint256): nonpayable def remove_liquidity(_amount: uint256, min_amounts: uint256[BASE_N_COINS]): nonpayable def remove_liquidity_one_coin(_token_amount: uint256, i: int128, min_amount: uint256): nonpayable def remove_liquidity_imbalance(amounts: uint256[BASE_N_COINS], max_burn_amount: uint256): nonpayable def calc_withdraw_one_coin(_token_amount: uint256, i: int128) -> uint256: view def calc_token_amount(amounts: uint256[BASE_N_COINS], deposit: bool) -> uint256: view def coins(i: uint256) -> address: view def fee() -> uint256: view BASE_POOL: constant(address) = 0x1337BedC9D22ecbe766dF105c9623922A27963EC BASE_N_COINS: constant(int128) = 3 BASE_COINS: constant(address[BASE_N_COINS]) = [ 0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1, 0x7F5c764cBc14f9669B88837ca1490cCa17c31607, 0x94b008aA00579c1307B0EF2c499aD98a8ce58e58 ] BASE_LP_TOKEN: constant(address) = 0x1337BedC9D22ecbe766dF105c9623922A27963EC N_COINS: constant(int128) = 2 MAX_COIN: constant(int128) = N_COINS-1 N_ALL_COINS: constant(int128) = N_COINS + BASE_N_COINS - 1 FEE_DENOMINATOR: constant(uint256) = 10 ** 10 FEE_IMPRECISION: constant(uint256) = 100 * 10 ** 8 # % of the fee # coin -> pool -> is approved to transfer? is_approved: HashMap[address, HashMap[address, bool]] @external def __init__(): """ @notice Contract constructor """ for coin in BASE_COINS: ERC20(coin).approve(BASE_POOL, MAX_UINT256) @external def add_liquidity( _pool: address, _deposit_amounts: uint256[N_ALL_COINS], _min_mint_amount: uint256, _receiver: address = msg.sender, ) -> uint256: """ @notice Wrap underlying coins and deposit them into `_pool` @param _pool Address of the pool to deposit into @param _deposit_amounts List of amounts of underlying coins to deposit @param _min_mint_amount Minimum amount of LP tokens to mint from the deposit @param _receiver Address that receives the LP tokens @return Amount of LP tokens received by depositing """ meta_amounts: uint256[N_COINS] = empty(uint256[N_COINS]) base_amounts: uint256[BASE_N_COINS] = empty(uint256[BASE_N_COINS]) deposit_base: bool = False base_coins: address[BASE_N_COINS] = BASE_COINS if _deposit_amounts[0] != 0: coin: address = CurveMeta(_pool).coins(0) if not self.is_approved[coin][_pool]: ERC20(coin).approve(_pool, MAX_UINT256) self.is_approved[coin][_pool] = True response: Bytes[32] = raw_call( coin, _abi_encode( msg.sender, self, _deposit_amounts[0], method_id=method_id("transferFrom(address,address,uint256)"), ), max_outsize=32 ) if len(response) != 0: assert convert(response, bool) # hand fee on transfer meta_amounts[0] = ERC20(coin).balanceOf(self) for i in range(1, N_ALL_COINS): amount: uint256 = _deposit_amounts[i] if amount == 0: continue deposit_base = True base_idx: uint256 = i - 1 coin: address = base_coins[base_idx] response: Bytes[32] = raw_call( coin, _abi_encode( msg.sender, self, amount, method_id=method_id("transferFrom(address,address,uint256)"), ), max_outsize=32 ) if len(response) != 0: assert convert(response, bool) # Handle potential transfer fees (i.e. Tether/renBTC) base_amounts[base_idx] = ERC20(coin).balanceOf(self) # Deposit to the base pool if deposit_base: coin: address = BASE_LP_TOKEN CurveBase(BASE_POOL).add_liquidity(base_amounts, 0) meta_amounts[MAX_COIN] = ERC20(coin).balanceOf(self) if not self.is_approved[coin][_pool]: ERC20(coin).approve(_pool, MAX_UINT256) self.is_approved[coin][_pool] = True # Deposit to the meta pool return CurveMeta(_pool).add_liquidity(meta_amounts, _min_mint_amount, _receiver) @external def remove_liquidity( _pool: address, _burn_amount: uint256, _min_amounts: uint256[N_ALL_COINS], _receiver: address = msg.sender ) -> uint256[N_ALL_COINS]: """ @notice Withdraw and unwrap coins from the pool @dev Withdrawal amounts are based on current deposit ratios @param _pool Address of the pool to deposit into @param _burn_amount Quantity of LP tokens to burn in the withdrawal @param _min_amounts Minimum amounts of underlying coins to receive @param _receiver Address that receives the LP tokens @return List of amounts of underlying coins that were withdrawn """ response: Bytes[32] = raw_call( _pool, _abi_encode( msg.sender, self, _burn_amount, method_id=method_id("transferFrom(address,address,uint256)"), ), max_outsize=32 ) if len(response) != 0: assert convert(response, bool) min_amounts_base: uint256[BASE_N_COINS] = empty(uint256[BASE_N_COINS]) amounts: uint256[N_ALL_COINS] = empty(uint256[N_ALL_COINS]) # Withdraw from meta meta_received: uint256[N_COINS] = empty(uint256[N_COINS]) CurveMeta(_pool).remove_liquidity(_burn_amount, [_min_amounts[0], convert(0, uint256)]) coins: address[N_COINS] = empty(address[N_COINS]) for i in range(N_COINS): coin: address = CurveMeta(_pool).coins(i) coins[i] = coin # Handle fee on transfer for the first coin meta_received[i] = ERC20(coin).balanceOf(self) # Withdraw from base for i in range(BASE_N_COINS): min_amounts_base[i] = _min_amounts[MAX_COIN+i] CurveBase(BASE_POOL).remove_liquidity(meta_received[MAX_COIN], min_amounts_base) # Transfer all coins out response = raw_call( coins[0], # metapool coin 0 _abi_encode( _receiver, meta_received[0], method_id=method_id("transfer(address,uint256)"), ), max_outsize=32 ) if len(response) != 0: assert convert(response, bool) amounts[0] = meta_received[0] base_coins: address[BASE_N_COINS] = BASE_COINS for i in range(1, N_ALL_COINS): coin: address = base_coins[i-1] # handle potential fee on transfer amounts[i] = ERC20(coin).balanceOf(self) response = raw_call( coin, _abi_encode( _receiver, amounts[i], method_id=method_id("transfer(address,uint256)"), ), max_outsize=32 ) if len(response) != 0: assert convert(response, bool) return amounts @external def remove_liquidity_one_coin( _pool: address, _burn_amount: uint256, i: int128, _min_amount: uint256, _receiver: address=msg.sender ) -> uint256: """ @notice Withdraw and unwrap a single coin from the pool @param _pool Address of the pool to deposit into @param _burn_amount Amount of LP tokens to burn in the withdrawal @param i Index value of the coin to withdraw @param _min_amount Minimum amount of underlying coin to receive @param _receiver Address that receives the LP tokens @return Amount of underlying coin received """ response: Bytes[32] = raw_call( _pool, _abi_encode( msg.sender, self, _burn_amount, method_id=method_id("transferFrom(address,address,uint256)"), ), max_outsize=32 ) if len(response) != 0: assert convert(response, bool) coin_amount: uint256 = 0 if i == 0: coin_amount = CurveMeta(_pool).remove_liquidity_one_coin(_burn_amount, i, _min_amount, _receiver) else: base_coins: address[BASE_N_COINS] = BASE_COINS coin: address = base_coins[i - MAX_COIN] # Withdraw a base pool coin coin_amount = CurveMeta(_pool).remove_liquidity_one_coin(_burn_amount, MAX_COIN, 0, self) CurveBase(BASE_POOL).remove_liquidity_one_coin(coin_amount, i-MAX_COIN, _min_amount) coin_amount = ERC20(coin).balanceOf(self) response = raw_call( coin, _abi_encode( _receiver, coin_amount, method_id=method_id("transfer(address,uint256)"), ), max_outsize=32 ) if len(response) != 0: assert convert(response, bool) return coin_amount @external def remove_liquidity_imbalance( _pool: address, _amounts: uint256[N_ALL_COINS], _max_burn_amount: uint256, _receiver: address=msg.sender ) -> uint256: """ @notice Withdraw coins from the pool in an imbalanced amount @param _pool Address of the pool to deposit into @param _amounts List of amounts of underlying coins to withdraw @param _max_burn_amount Maximum amount of LP token to burn in the withdrawal @param _receiver Address that receives the LP tokens @return Actual amount of the LP token burned in the withdrawal """ fee: uint256 = CurveBase(BASE_POOL).fee() * BASE_N_COINS / (4 * (BASE_N_COINS - 1)) fee += fee * FEE_IMPRECISION / FEE_DENOMINATOR # Overcharge to account for imprecision # Transfer the LP token in response: Bytes[32] = raw_call( _pool, _abi_encode( msg.sender, self, _max_burn_amount, method_id=method_id("transferFrom(address,address,uint256)"), ), max_outsize=32 ) if len(response) != 0: assert convert(response, bool) withdraw_base: bool = False amounts_base: uint256[BASE_N_COINS] = empty(uint256[BASE_N_COINS]) amounts_meta: uint256[N_COINS] = empty(uint256[N_COINS]) # determine amounts to withdraw from base pool for i in range(BASE_N_COINS): amount: uint256 = _amounts[MAX_COIN + i] if amount != 0: amounts_base[i] = amount withdraw_base = True # determine amounts to withdraw from metapool amounts_meta[0] = _amounts[0] if withdraw_base: amounts_meta[MAX_COIN] = CurveBase(BASE_POOL).calc_token_amount(amounts_base, False) amounts_meta[MAX_COIN] += amounts_meta[MAX_COIN] * fee / FEE_DENOMINATOR + 1 # withdraw from metapool and return the remaining LP tokens burn_amount: uint256 = CurveMeta(_pool).remove_liquidity_imbalance(amounts_meta, _max_burn_amount) response = raw_call( _pool, _abi_encode( msg.sender, _max_burn_amount - burn_amount, method_id=method_id("transfer(address,uint256)"), ), max_outsize=32 ) if len(response) != 0: assert convert(response, bool) # withdraw from base pool if withdraw_base: CurveBase(BASE_POOL).remove_liquidity_imbalance(amounts_base, amounts_meta[MAX_COIN]) coin: address = BASE_LP_TOKEN leftover: uint256 = ERC20(coin).balanceOf(self) if leftover > 0: # if some base pool LP tokens remain, re-deposit them for the caller if not self.is_approved[coin][_pool]: ERC20(coin).approve(_pool, MAX_UINT256) self.is_approved[coin][_pool] = True burn_amount -= CurveMeta(_pool).add_liquidity([convert(0, uint256), leftover], 0, msg.sender) # transfer withdrawn base pool tokens to caller base_coins: address[BASE_N_COINS] = BASE_COINS for i in range(BASE_N_COINS): response = raw_call( base_coins[i], _abi_encode( _receiver, ERC20(base_coins[i]).balanceOf(self), # handle potential transfer fees method_id=method_id("transfer(address,uint256)"), ), max_outsize=32 ) if len(response) != 0: assert convert(response, bool) # transfer withdrawn metapool tokens to caller if _amounts[0] > 0: coin: address = CurveMeta(_pool).coins(0) response = raw_call( coin, _abi_encode( _receiver, ERC20(coin).balanceOf(self), # handle potential fees method_id=method_id("transfer(address,uint256)"), ), max_outsize=32 ) if len(response) != 0: assert convert(response, bool) return burn_amount @view @external def calc_withdraw_one_coin(_pool: address, _token_amount: uint256, i: int128) -> uint256: """ @notice Calculate the amount received when withdrawing and unwrapping a single coin @param _pool Address of the pool to deposit into @param _token_amount Amount of LP tokens to burn in the withdrawal @param i Index value of the underlying coin to withdraw @return Amount of coin received """ if i < MAX_COIN: return CurveMeta(_pool).calc_withdraw_one_coin(_token_amount, i) else: _base_tokens: uint256 = CurveMeta(_pool).calc_withdraw_one_coin(_token_amount, MAX_COIN) return CurveBase(BASE_POOL).calc_withdraw_one_coin(_base_tokens, i-MAX_COIN) @view @external def calc_token_amount(_pool: address, _amounts: uint256[N_ALL_COINS], _is_deposit: bool) -> uint256: """ @notice Calculate addition or reduction in token supply from a deposit or withdrawal @dev This calculation accounts for slippage, but not fees. Needed to prevent front-running, not for precise calculations! @param _pool Address of the pool to deposit into @param _amounts Amount of each underlying coin being deposited @param _is_deposit set True for deposits, False for withdrawals @return Expected amount of LP tokens received """ meta_amounts: uint256[N_COINS] = empty(uint256[N_COINS]) base_amounts: uint256[BASE_N_COINS] = empty(uint256[BASE_N_COINS]) meta_amounts[0] = _amounts[0] for i in range(BASE_N_COINS): base_amounts[i] = _amounts[i + MAX_COIN] base_tokens: uint256 = CurveBase(BASE_POOL).calc_token_amount(base_amounts, _is_deposit) meta_amounts[MAX_COIN] = base_tokens return CurveMeta(_pool).calc_token_amount(meta_amounts, _is_deposit)
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"stateMutability":"nonpayable","type":"constructor","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"add_liquidity","inputs":[{"name":"_pool","type":"address"},{"name":"_deposit_amounts","type":"uint256[4]"},{"name":"_min_mint_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":121432},{"stateMutability":"nonpayable","type":"function","name":"add_liquidity","inputs":[{"name":"_pool","type":"address"},{"name":"_deposit_amounts","type":"uint256[4]"},{"name":"_min_mint_amount","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":121432},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity","inputs":[{"name":"_pool","type":"address"},{"name":"_burn_amount","type":"uint256"},{"name":"_min_amounts","type":"uint256[4]"}],"outputs":[{"name":"","type":"uint256[4]"}],"gas":47367},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity","inputs":[{"name":"_pool","type":"address"},{"name":"_burn_amount","type":"uint256"},{"name":"_min_amounts","type":"uint256[4]"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256[4]"}],"gas":47367},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity_one_coin","inputs":[{"name":"_pool","type":"address"},{"name":"_burn_amount","type":"uint256"},{"name":"i","type":"int128"},{"name":"_min_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":21060},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity_one_coin","inputs":[{"name":"_pool","type":"address"},{"name":"_burn_amount","type":"uint256"},{"name":"i","type":"int128"},{"name":"_min_amount","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":21060},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity_imbalance","inputs":[{"name":"_pool","type":"address"},{"name":"_amounts","type":"uint256[4]"},{"name":"_max_burn_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":105451},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity_imbalance","inputs":[{"name":"_pool","type":"address"},{"name":"_amounts","type":"uint256[4]"},{"name":"_max_burn_amount","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":105451},{"stateMutability":"view","type":"function","name":"calc_withdraw_one_coin","inputs":[{"name":"_pool","type":"address"},{"name":"_token_amount","type":"uint256"},{"name":"i","type":"int128"}],"outputs":[{"name":"","type":"uint256"}],"gas":5845},{"stateMutability":"view","type":"function","name":"calc_token_amount","inputs":[{"name":"_pool","type":"address"},{"name":"_amounts","type":"uint256[4]"},{"name":"_is_deposit","type":"bool"}],"outputs":[{"name":"","type":"uint256"}],"gas":6777}]
Contract Creation Code
73da10009cbd5d07dd0cecc66161fc93d7c9000da161012052737f5c764cbc14f9669b88837ca1490cca17c31607610140527394b008aa00579c1307b0ef2c499ad98a8ce58e586101605261010060006003818352015b60206101005102610120015160e05263095ea7b361018052731337bedc9d22ecbe766df105c9623922a27963ec6101a0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101c05260e0513b15611a4b5760006000604461019c600060e0515af16100d4573d600060003e3d6000fd5b8151600101808352811415610056575050611a3356600436101561000d5761193e565b60046000601c37600051346119445763384e03db811861003157336101005261004c565b63d0b951e881186105b75760c4358060a01c61194457610100525b6004358060a01c6119445760e05260c0366101203773da10009cbd5d07dd0cecc66161fc93d7c9000da16101e052737f5c764cbc14f9669b88837ca1490cca17c31607610200527394b008aa00579c1307b0ef2c499ad98a8ce58e586102205260006024351461027f5763c6610657610260526000610280526020610260602461027c60e0515afa6100e3573d600060003e3d6000fd5b601f3d111561194457610260518060a01c611944576102405260006102405160a052608052604060802060e05160a0526080526040608020546101a25763095ea7b36102605260e051610280527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102a052610240513b156119445760006000604461027c6000610240515af161017f573d600060003e3d6000fd5b600160006102405160a052608052604060802060e05160a0526080526040608020555b6323b872dd6102a4526004336102c452306102e452602435610304526060016102a0526102a05060206103606102a0516102c06000610240515af16101ec573d600060003e3d6000fd5b61034060203d8082116101ff5781610201565b805b905090508152805160200180610260828460045afa905050506000610260511461024057610280516102605181816020036008021c9050905015611944575b6370a082316102a052306102c05260206102a060246102bc610240515afa61026d573d600060003e3d6000fd5b601f3d1115611944576102a051610120525b61024060016003818352015b602061024051026024013561026052610260516102a7576103cd565b60016101c0526102405160018082106119445780820390509050610280526101e06102805160038110156119445760200201516102a0526323b872dd610304526004336103245230610344526102605161036452606001610300526103005060206103c06103005161032060006102a0515af1610329573d600060003e3d6000fd5b6103a060203d80821161033c578161033e565b805b9050905081528051602001806102c0828460045afa9050505060006102c0511461037d576102e0516102c05181816020036008021c9050905015611944575b6370a082316103005230610320526020610300602461031c6102a0515afa6103aa573d600060003e3d6000fd5b601f3d111561194457610300516101606102805160038110156119445760200201525b815160010180835281141561028b5750506101c0511561055757731337bedc9d22ecbe766df105c9623922a27963ec61024052634515cef3610260526101605161028052610180516102a0526101a0516102c05260006102e052731337bedc9d22ecbe766df105c9623922a27963ec3b156119445760006000608461027c6000731337bedc9d22ecbe766df105c9623922a27963ec5af1610473573d600060003e3d6000fd5b6370a082316102605230610280526020610260602461027c610240515afa6104a0573d600060003e3d6000fd5b601f3d111561194457610260516101405260006102405160a052608052604060802060e05160a0526080526040608020546105575763095ea7b36102605260e051610280527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102a052610240513b156119445760006000604461027c6000610240515af1610534573d600060003e3d6000fd5b600160006102405160a052608052604060802060e05160a0526080526040608020555b630c3e4b54610240526101205161026052610140516102805260a4356102a052610100516102c0526020610240608461025c600060e0515af161059f573d600060003e3d6000fd5b601f3d111561194457610240516102e05260206102e0f35b63ad5cc91881186105cc5733610100526105e7565b63cbc399e58118610ad15760c4358060a01c61194457610100525b6004358060a01c6119445760e0526323b872dd6101645260043361018452306101a4526024356101c4526060016101605261016050602061022061016051610180600060e0515af161063e573d600060003e3d6000fd5b61020060203d8082116106515781610653565b805b905090508152805160200180610120828460045afa905050506000610120511461069257610140516101205181816020036008021c9050905015611944575b6101203661016037635b36389c610280526024356102a0526044356102c05260006102e05260e0513b156119445760006000606461029c600060e0515af16106df573d600060003e3d6000fd5b604036610280376102c060006002818352015b63c6610657610300526102c051610320526020610300602461031c60e0515afa610721573d600060003e3d6000fd5b601f3d111561194457610300518060a01c611944576102e0526102e0516102806102c05160028110156119445760200201526370a082316103005230610320526020610300602461031c6102e0515afa610780573d600060003e3d6000fd5b601f3d111561194457610300516102406102c051600281101561194457602002015281516001018083528114156106f25750506102c060006003818352015b602060016102c0518181830110611944578082019050905002604401356101606102c051600381101561194457602002015281516001018083528114156107bf57505063ecb586a56102c052610260516102e052610160516103005261018051610320526101a05161034052731337bedc9d22ecbe766df105c9623922a27963ec3b15611944576000600060846102dc6000731337bedc9d22ecbe766df105c9623922a27963ec5af1610877573d600060003e3d6000fd5b63a9059cbb6102c4526004610100516102e45261024051610304526040016102c0526102c05060206103606102c0516102e06000610280515af16108c0573d600060003e3d6000fd5b61034060203d8082116108d357816108d5565b805b905090508152805160200180610120828460045afa905050506000610120511461091457610140516101205181816020036008021c9050905015611944575b610240516101c05273da10009cbd5d07dd0cecc66161fc93d7c9000da16102c052737f5c764cbc14f9669b88837ca1490cca17c316076102e0527394b008aa00579c1307b0ef2c499ad98a8ce58e586103005261032060016003818352015b6102c061032051600180821061194457808203905090506003811015611944576020020151610340526370a082316103605230610380526020610360602461037c610340515afa6109c9573d600060003e3d6000fd5b601f3d111561194457610360516101c061032051600481101561194457602002015263a9059cbb61036452600461010051610384526101c06103205160048110156119445760200201516103a45260400161036052610360506020610400610360516103806000610340515af1610a45573d600060003e3d6000fd5b6103e060203d808211610a585781610a5a565b805b905090508152805160200180610120828460045afa9050505060006101205114610a9957610140516101205181816020036008021c9050905015611944575b81516001018083528114156109735750506101c051610320526101e05161034052610200516103605261022051610380526080610320f35b6329ed28628118610ae6573361012052610b01565b631e700cbb8118610e64576084358060a01c61194457610120525b6004358060a01c6119445760e0526044358060801d81607f1d1861194457610100526323b872dd610184526004336101a452306101c4526024356101e45260600161018052610180506020610240610180516101a0600060e0515af1610b6c573d600060003e3d6000fd5b61022060203d808211610b7f5781610b81565b805b905090508152805160200180610140828460045afa9050505060006101405114610bc057610160516101405181816020036008021c9050905015611944575b6000610180526101005115610dfc5773da10009cbd5d07dd0cecc66161fc93d7c9000da16101a052737f5c764cbc14f9669b88837ca1490cca17c316076101c0527394b008aa00579c1307b0ef2c499ad98a8ce58e586101e0526101a06101005160018082038060801d81607f1d18611944579050905060038110156119445760200201516102005263081579a56102205260243561024052600161026052600061028052306102a0526020610220608461023c600060e0515af1610c8a573d600060003e3d6000fd5b601f3d1115611944576102205161018052631a4d01d26102205261018051610240526101005160018082038060801d81607f1d1861194457905090506102605260643561028052731337bedc9d22ecbe766df105c9623922a27963ec3b156119445760006000606461023c6000731337bedc9d22ecbe766df105c9623922a27963ec5af1610d1d573d600060003e3d6000fd5b6370a082316102205230610240526020610220602461023c610200515afa610d4a573d600060003e3d6000fd5b601f3d111561194457610220516101805263a9059cbb61022452600461012051610244526101805161026452604001610220526102205060206102c0610220516102406000610200515af1610da4573d600060003e3d6000fd5b6102a060203d808211610db75781610db9565b805b905090508152805160200180610140828460045afa9050505060006101405114610e5557610160516101405181816020036008021c905090501561194457610e55565b63081579a56101a0526024356101c052610100516101e05260643561020052610120516102205260206101a060846101bc600060e0515af1610e43573d600060003e3d6000fd5b601f3d1115611944576101a051610180525b610180516101a05260206101a0f35b63ac24f7718118610e79573361010052610e94565b634329c8cc81186116a05760c4358060a01c61194457610100525b6004358060a01c6119445760e05263ddca3f43610140526020610140600461015c731337bedc9d22ecbe766df105c9623922a27963ec5afa610edb573d600060003e3d6000fd5b601f3d1115611944576101405160038082028215828483041417156119445790509050600880820490509050610120526101208051610120516402540be40080820282158284830414171561194457905090506402540be40080820490509050818183011061194457808201905090508152506323b872dd610184526004336101a452306101c45260a4356101e45260600161018052610180506020610240610180516101a0600060e0515af1610f97573d600060003e3d6000fd5b61022060203d808211610faa5781610fac565b805b905090508152805160200180610140828460045afa9050505060006101405114610feb57610160516101405181816020036008021c9050905015611944575b60c0366101803761024060006003818352015b6020600161024051818183011061194457808201905090500260240135610260526000610260511461104a57610260516101a06102405160038110156119445760200201526001610180525b8151600101808352811415610ffe57505060243561020052610180511561112757633883e119610240526101a051610260526101c051610280526101e0516102a05260006102c0526020610240608461025c731337bedc9d22ecbe766df105c9623922a27963ec5afa6110c2573d600060003e3d6000fd5b601f3d11156119445761024051610220526102208051610220516101205180820282158284830414171561194457905090506402540be40080820490509050600181818301106119445780820190509050818183011061194457808201905090508152505b63e3103273610260526102005161028052610220516102a05260a4356102c0526020610260606461027c600060e0515af1611167573d600060003e3d6000fd5b601f3d111561194457610260516102405263a9059cbb610264526004336102845260a4356102405180821061194457808203905090506102a4526040016102605261026050602061030061026051610280600060e0515af16111ce573d600060003e3d6000fd5b6102e060203d8082116111e157816111e3565b805b905090508152805160200180610140828460045afa905050506000610140511461122257610160516101405181816020036008021c9050905015611944575b610180511561156d57639fdaea0c610260526101a051610280526101c0516102a0526101e0516102c052610220516102e052731337bedc9d22ecbe766df105c9623922a27963ec3b156119445760006000608461027c6000731337bedc9d22ecbe766df105c9623922a27963ec5af16112a0573d600060003e3d6000fd5b731337bedc9d22ecbe766df105c9623922a27963ec610260526370a082316102a052306102c05260206102a060246102bc610260515afa6112e6573d600060003e3d6000fd5b601f3d1115611944576102a05161028052600061028051111561140f5760006102605160a052608052604060802060e05160a0526080526040608020546113a95763095ea7b36102a05260e0516102c0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102e052610260513b15611944576000600060446102bc6000610260515af1611386573d600060003e3d6000fd5b600160006102605160a052608052604060802060e05160a0526080526040608020555b6102408051630c3e4b546102a05260006102c052610280516102e052600061030052336103205260206102a060846102bc600060e0515af16113f0573d600060003e3d6000fd5b601f3d1115611944576102a05180821061194457808203905090508152505b73da10009cbd5d07dd0cecc66161fc93d7c9000da16102a052737f5c764cbc14f9669b88837ca1490cca17c316076102c0527394b008aa00579c1307b0ef2c499ad98a8ce58e586102e05261030060006003818352015b63a9059cbb61036452600461010051610384526370a082316103205230610340526020610320602461033c6102a06103005160038110156119445760200201515afa6114b7573d600060003e3d6000fd5b601f3d111561194457610320516103a452604001610360526103605060206104006103605161038060006102a06103005160038110156119445760200201515af1611507573d600060003e3d6000fd5b6103e060203d80821161151a578161151c565b805b905090508152805160200180610140828460045afa905050506000610140511461155b57610160516101405181816020036008021c9050905015611944575b81516001018083528114156114665750505b600060243511156116915763c66106576102805260006102a0526020610280602461029c60e0515afa6115a5573d600060003e3d6000fd5b601f3d111561194457610280518060a01c611944576102605263a9059cbb6102c4526004610100516102e4526370a0823161028052306102a0526020610280602461029c610260515afa6115fe573d600060003e3d6000fd5b601f3d11156119445761028051610304526040016102c0526102c05060206103606102c0516102e06000610260515af161163d573d600060003e3d6000fd5b61034060203d8082116116505781611652565b805b905090508152805160200180610140828460045afa905050506000610140511461169157610160516101405181816020036008021c9050905015611944575b61024051610260526020610260f35b6341b028f381186117ee576004358060a01c6119445760e0526044358060801d81607f1d1861194457610100526001610100511261179b5763cc2b27d761014052602435610160526001610180526020610140604461015c60e0515afa61170c573d600060003e3d6000fd5b601f3d111561194457610140516101205263cc2b27d76101405261012051610160526101005160018082038060801d81607f1d186119445790509050610180526020610140604461015c731337bedc9d22ecbe766df105c9623922a27963ec5afa61177c573d600060003e3d6000fd5b601f3d111561194457610140516101a05260206101a06117ec566117ec565b63cc2b27d7610120526024356101405261010051610160526020610120604461013c60e0515afa6117d1573d600060003e3d6000fd5b601f3d111561194457610120516101805260206101806117ec565bf35b63861cdef0811861193c576004358060a01c6119445760e05260a4358060011c611944576101005260a03661012037602435610120526101c060006003818352015b60206101c05160018181830110611944578082019050905002602401356101606101c05160038110156119445760200201528151600101808352811415611830575050633883e1196101e052610160516102005261018051610220526101a05161024052610100516102605260206101e060846101fc731337bedc9d22ecbe766df105c9623922a27963ec5afa6118cc573d600060003e3d6000fd5b601f3d1115611944576101e0516101c0526101c0516101405263ed8e84f36101e05261012051610200526101405161022052610100516102405260206101e060646101fc60e0515afa611924573d600060003e3d6000fd5b601f3d1115611944576101e051610260526020610260f35b505b60006000fd5b600080fd5b6100ea611a33036100ea6000396100ea611a33036000f35b600080fd
Deployed Bytecode
0x600436101561000d5761193e565b60046000601c37600051346119445763384e03db811861003157336101005261004c565b63d0b951e881186105b75760c4358060a01c61194457610100525b6004358060a01c6119445760e05260c0366101203773da10009cbd5d07dd0cecc66161fc93d7c9000da16101e052737f5c764cbc14f9669b88837ca1490cca17c31607610200527394b008aa00579c1307b0ef2c499ad98a8ce58e586102205260006024351461027f5763c6610657610260526000610280526020610260602461027c60e0515afa6100e3573d600060003e3d6000fd5b601f3d111561194457610260518060a01c611944576102405260006102405160a052608052604060802060e05160a0526080526040608020546101a25763095ea7b36102605260e051610280527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102a052610240513b156119445760006000604461027c6000610240515af161017f573d600060003e3d6000fd5b600160006102405160a052608052604060802060e05160a0526080526040608020555b6323b872dd6102a4526004336102c452306102e452602435610304526060016102a0526102a05060206103606102a0516102c06000610240515af16101ec573d600060003e3d6000fd5b61034060203d8082116101ff5781610201565b805b905090508152805160200180610260828460045afa905050506000610260511461024057610280516102605181816020036008021c9050905015611944575b6370a082316102a052306102c05260206102a060246102bc610240515afa61026d573d600060003e3d6000fd5b601f3d1115611944576102a051610120525b61024060016003818352015b602061024051026024013561026052610260516102a7576103cd565b60016101c0526102405160018082106119445780820390509050610280526101e06102805160038110156119445760200201516102a0526323b872dd610304526004336103245230610344526102605161036452606001610300526103005060206103c06103005161032060006102a0515af1610329573d600060003e3d6000fd5b6103a060203d80821161033c578161033e565b805b9050905081528051602001806102c0828460045afa9050505060006102c0511461037d576102e0516102c05181816020036008021c9050905015611944575b6370a082316103005230610320526020610300602461031c6102a0515afa6103aa573d600060003e3d6000fd5b601f3d111561194457610300516101606102805160038110156119445760200201525b815160010180835281141561028b5750506101c0511561055757731337bedc9d22ecbe766df105c9623922a27963ec61024052634515cef3610260526101605161028052610180516102a0526101a0516102c05260006102e052731337bedc9d22ecbe766df105c9623922a27963ec3b156119445760006000608461027c6000731337bedc9d22ecbe766df105c9623922a27963ec5af1610473573d600060003e3d6000fd5b6370a082316102605230610280526020610260602461027c610240515afa6104a0573d600060003e3d6000fd5b601f3d111561194457610260516101405260006102405160a052608052604060802060e05160a0526080526040608020546105575763095ea7b36102605260e051610280527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102a052610240513b156119445760006000604461027c6000610240515af1610534573d600060003e3d6000fd5b600160006102405160a052608052604060802060e05160a0526080526040608020555b630c3e4b54610240526101205161026052610140516102805260a4356102a052610100516102c0526020610240608461025c600060e0515af161059f573d600060003e3d6000fd5b601f3d111561194457610240516102e05260206102e0f35b63ad5cc91881186105cc5733610100526105e7565b63cbc399e58118610ad15760c4358060a01c61194457610100525b6004358060a01c6119445760e0526323b872dd6101645260043361018452306101a4526024356101c4526060016101605261016050602061022061016051610180600060e0515af161063e573d600060003e3d6000fd5b61020060203d8082116106515781610653565b805b905090508152805160200180610120828460045afa905050506000610120511461069257610140516101205181816020036008021c9050905015611944575b6101203661016037635b36389c610280526024356102a0526044356102c05260006102e05260e0513b156119445760006000606461029c600060e0515af16106df573d600060003e3d6000fd5b604036610280376102c060006002818352015b63c6610657610300526102c051610320526020610300602461031c60e0515afa610721573d600060003e3d6000fd5b601f3d111561194457610300518060a01c611944576102e0526102e0516102806102c05160028110156119445760200201526370a082316103005230610320526020610300602461031c6102e0515afa610780573d600060003e3d6000fd5b601f3d111561194457610300516102406102c051600281101561194457602002015281516001018083528114156106f25750506102c060006003818352015b602060016102c0518181830110611944578082019050905002604401356101606102c051600381101561194457602002015281516001018083528114156107bf57505063ecb586a56102c052610260516102e052610160516103005261018051610320526101a05161034052731337bedc9d22ecbe766df105c9623922a27963ec3b15611944576000600060846102dc6000731337bedc9d22ecbe766df105c9623922a27963ec5af1610877573d600060003e3d6000fd5b63a9059cbb6102c4526004610100516102e45261024051610304526040016102c0526102c05060206103606102c0516102e06000610280515af16108c0573d600060003e3d6000fd5b61034060203d8082116108d357816108d5565b805b905090508152805160200180610120828460045afa905050506000610120511461091457610140516101205181816020036008021c9050905015611944575b610240516101c05273da10009cbd5d07dd0cecc66161fc93d7c9000da16102c052737f5c764cbc14f9669b88837ca1490cca17c316076102e0527394b008aa00579c1307b0ef2c499ad98a8ce58e586103005261032060016003818352015b6102c061032051600180821061194457808203905090506003811015611944576020020151610340526370a082316103605230610380526020610360602461037c610340515afa6109c9573d600060003e3d6000fd5b601f3d111561194457610360516101c061032051600481101561194457602002015263a9059cbb61036452600461010051610384526101c06103205160048110156119445760200201516103a45260400161036052610360506020610400610360516103806000610340515af1610a45573d600060003e3d6000fd5b6103e060203d808211610a585781610a5a565b805b905090508152805160200180610120828460045afa9050505060006101205114610a9957610140516101205181816020036008021c9050905015611944575b81516001018083528114156109735750506101c051610320526101e05161034052610200516103605261022051610380526080610320f35b6329ed28628118610ae6573361012052610b01565b631e700cbb8118610e64576084358060a01c61194457610120525b6004358060a01c6119445760e0526044358060801d81607f1d1861194457610100526323b872dd610184526004336101a452306101c4526024356101e45260600161018052610180506020610240610180516101a0600060e0515af1610b6c573d600060003e3d6000fd5b61022060203d808211610b7f5781610b81565b805b905090508152805160200180610140828460045afa9050505060006101405114610bc057610160516101405181816020036008021c9050905015611944575b6000610180526101005115610dfc5773da10009cbd5d07dd0cecc66161fc93d7c9000da16101a052737f5c764cbc14f9669b88837ca1490cca17c316076101c0527394b008aa00579c1307b0ef2c499ad98a8ce58e586101e0526101a06101005160018082038060801d81607f1d18611944579050905060038110156119445760200201516102005263081579a56102205260243561024052600161026052600061028052306102a0526020610220608461023c600060e0515af1610c8a573d600060003e3d6000fd5b601f3d1115611944576102205161018052631a4d01d26102205261018051610240526101005160018082038060801d81607f1d1861194457905090506102605260643561028052731337bedc9d22ecbe766df105c9623922a27963ec3b156119445760006000606461023c6000731337bedc9d22ecbe766df105c9623922a27963ec5af1610d1d573d600060003e3d6000fd5b6370a082316102205230610240526020610220602461023c610200515afa610d4a573d600060003e3d6000fd5b601f3d111561194457610220516101805263a9059cbb61022452600461012051610244526101805161026452604001610220526102205060206102c0610220516102406000610200515af1610da4573d600060003e3d6000fd5b6102a060203d808211610db75781610db9565b805b905090508152805160200180610140828460045afa9050505060006101405114610e5557610160516101405181816020036008021c905090501561194457610e55565b63081579a56101a0526024356101c052610100516101e05260643561020052610120516102205260206101a060846101bc600060e0515af1610e43573d600060003e3d6000fd5b601f3d1115611944576101a051610180525b610180516101a05260206101a0f35b63ac24f7718118610e79573361010052610e94565b634329c8cc81186116a05760c4358060a01c61194457610100525b6004358060a01c6119445760e05263ddca3f43610140526020610140600461015c731337bedc9d22ecbe766df105c9623922a27963ec5afa610edb573d600060003e3d6000fd5b601f3d1115611944576101405160038082028215828483041417156119445790509050600880820490509050610120526101208051610120516402540be40080820282158284830414171561194457905090506402540be40080820490509050818183011061194457808201905090508152506323b872dd610184526004336101a452306101c45260a4356101e45260600161018052610180506020610240610180516101a0600060e0515af1610f97573d600060003e3d6000fd5b61022060203d808211610faa5781610fac565b805b905090508152805160200180610140828460045afa9050505060006101405114610feb57610160516101405181816020036008021c9050905015611944575b60c0366101803761024060006003818352015b6020600161024051818183011061194457808201905090500260240135610260526000610260511461104a57610260516101a06102405160038110156119445760200201526001610180525b8151600101808352811415610ffe57505060243561020052610180511561112757633883e119610240526101a051610260526101c051610280526101e0516102a05260006102c0526020610240608461025c731337bedc9d22ecbe766df105c9623922a27963ec5afa6110c2573d600060003e3d6000fd5b601f3d11156119445761024051610220526102208051610220516101205180820282158284830414171561194457905090506402540be40080820490509050600181818301106119445780820190509050818183011061194457808201905090508152505b63e3103273610260526102005161028052610220516102a05260a4356102c0526020610260606461027c600060e0515af1611167573d600060003e3d6000fd5b601f3d111561194457610260516102405263a9059cbb610264526004336102845260a4356102405180821061194457808203905090506102a4526040016102605261026050602061030061026051610280600060e0515af16111ce573d600060003e3d6000fd5b6102e060203d8082116111e157816111e3565b805b905090508152805160200180610140828460045afa905050506000610140511461122257610160516101405181816020036008021c9050905015611944575b610180511561156d57639fdaea0c610260526101a051610280526101c0516102a0526101e0516102c052610220516102e052731337bedc9d22ecbe766df105c9623922a27963ec3b156119445760006000608461027c6000731337bedc9d22ecbe766df105c9623922a27963ec5af16112a0573d600060003e3d6000fd5b731337bedc9d22ecbe766df105c9623922a27963ec610260526370a082316102a052306102c05260206102a060246102bc610260515afa6112e6573d600060003e3d6000fd5b601f3d1115611944576102a05161028052600061028051111561140f5760006102605160a052608052604060802060e05160a0526080526040608020546113a95763095ea7b36102a05260e0516102c0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102e052610260513b15611944576000600060446102bc6000610260515af1611386573d600060003e3d6000fd5b600160006102605160a052608052604060802060e05160a0526080526040608020555b6102408051630c3e4b546102a05260006102c052610280516102e052600061030052336103205260206102a060846102bc600060e0515af16113f0573d600060003e3d6000fd5b601f3d1115611944576102a05180821061194457808203905090508152505b73da10009cbd5d07dd0cecc66161fc93d7c9000da16102a052737f5c764cbc14f9669b88837ca1490cca17c316076102c0527394b008aa00579c1307b0ef2c499ad98a8ce58e586102e05261030060006003818352015b63a9059cbb61036452600461010051610384526370a082316103205230610340526020610320602461033c6102a06103005160038110156119445760200201515afa6114b7573d600060003e3d6000fd5b601f3d111561194457610320516103a452604001610360526103605060206104006103605161038060006102a06103005160038110156119445760200201515af1611507573d600060003e3d6000fd5b6103e060203d80821161151a578161151c565b805b905090508152805160200180610140828460045afa905050506000610140511461155b57610160516101405181816020036008021c9050905015611944575b81516001018083528114156114665750505b600060243511156116915763c66106576102805260006102a0526020610280602461029c60e0515afa6115a5573d600060003e3d6000fd5b601f3d111561194457610280518060a01c611944576102605263a9059cbb6102c4526004610100516102e4526370a0823161028052306102a0526020610280602461029c610260515afa6115fe573d600060003e3d6000fd5b601f3d11156119445761028051610304526040016102c0526102c05060206103606102c0516102e06000610260515af161163d573d600060003e3d6000fd5b61034060203d8082116116505781611652565b805b905090508152805160200180610140828460045afa905050506000610140511461169157610160516101405181816020036008021c9050905015611944575b61024051610260526020610260f35b6341b028f381186117ee576004358060a01c6119445760e0526044358060801d81607f1d1861194457610100526001610100511261179b5763cc2b27d761014052602435610160526001610180526020610140604461015c60e0515afa61170c573d600060003e3d6000fd5b601f3d111561194457610140516101205263cc2b27d76101405261012051610160526101005160018082038060801d81607f1d186119445790509050610180526020610140604461015c731337bedc9d22ecbe766df105c9623922a27963ec5afa61177c573d600060003e3d6000fd5b601f3d111561194457610140516101a05260206101a06117ec566117ec565b63cc2b27d7610120526024356101405261010051610160526020610120604461013c60e0515afa6117d1573d600060003e3d6000fd5b601f3d111561194457610120516101805260206101806117ec565bf35b63861cdef0811861193c576004358060a01c6119445760e05260a4358060011c611944576101005260a03661012037602435610120526101c060006003818352015b60206101c05160018181830110611944578082019050905002602401356101606101c05160038110156119445760200201528151600101808352811415611830575050633883e1196101e052610160516102005261018051610220526101a05161024052610100516102605260206101e060846101fc731337bedc9d22ecbe766df105c9623922a27963ec5afa6118cc573d600060003e3d6000fd5b601f3d1115611944576101e0516101c0526101c0516101405263ed8e84f36101e05261012051610200526101405161022052610100516102405260206101e060646101fc60e0515afa611924573d600060003e3d6000fd5b601f3d1115611944576101e051610260526020610260f35b505b60006000fd5b600080fd
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ 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.