// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
type RobinhoodCurrency is address;
interface IRobinhoodHooks {}
struct RobinhoodPoolKey {
RobinhoodCurrency currency0;
RobinhoodCurrency currency1;
uint24 fee;
int24 tickSpacing;
IRobinhoodHooks hooks;
}
interface IRobinhoodERC20Minimal {
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
function approve(address spender, uint256 value) external returns (bool);
}
interface IRobinhoodPermit2AllowanceTransfer {
function approve(address token, address spender, uint160 amount, uint48 expiration) external;
}
interface IRobinhoodUniswapV4PositionManager {
function initializePool(RobinhoodPoolKey calldata key, uint160 sqrtPriceX96) external payable returns (int24);
function modifyLiquidities(bytes calldata unlockData, uint256 deadline) external payable;
function nextTokenId() external view returns (uint256);
}
contract RobinhoodLaunchToken {
struct FeeRecipient {
address account;
uint16 bps;
}
uint256 public constant TOTAL_SUPPLY = 100_000_000_000 ether;
uint16 public constant BPS_DENOMINATOR = 10_000;
uint256 public constant MAX_FEE_RECIPIENTS = 20;
string public name;
string public symbol;
string public imageURI;
string public metadataURI;
uint8 public constant decimals = 18;
uint256 public totalSupply;
address public owner;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
FeeRecipient[] private _feeRecipients;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
event ImageURIUpdated(string imageURI);
event MetadataURIUpdated(string metadataURI);
event FeeRecipientsUpdated(address[] accounts, uint16[] bps);
event ETHDistributed(uint256 amount);
event ERC20Distributed(address indexed token, uint256 amount);
error NotOwner();
error ZeroAddress();
error InvalidFeeBps();
error TooManyFeeRecipients();
error InsufficientBalance();
error InsufficientAllowance();
modifier onlyOwner() {
if (msg.sender != owner) revert NotOwner();
_;
}
constructor(
string memory name_,
string memory symbol_,
string memory imageURI_,
string memory metadataURI_,
address initialOwner,
address supplyReceiver,
FeeRecipient[] memory feeRecipients_
) {
if (initialOwner == address(0) || supplyReceiver == address(0)) revert ZeroAddress();
name = name_;
symbol = symbol_;
imageURI = imageURI_;
metadataURI = metadataURI_;
owner = initialOwner;
_mint(supplyReceiver, TOTAL_SUPPLY);
_setFeeRecipients(feeRecipients_);
emit OwnershipTransferred(address(0), initialOwner);
emit ImageURIUpdated(imageURI_);
emit MetadataURIUpdated(metadataURI_);
}
receive() external payable {}
function feeRecipientsLength() external view returns (uint256) {
return _feeRecipients.length;
}
function feeRecipientAt(uint256 index) external view returns (address account, uint16 bps) {
FeeRecipient memory recipient = _feeRecipients[index];
return (recipient.account, recipient.bps);
}
function feeRecipients() external view returns (FeeRecipient[] memory) {
return _feeRecipients;
}
function setImageURI(string calldata newImageURI) external onlyOwner {
imageURI = newImageURI;
emit ImageURIUpdated(newImageURI);
}
function setMetadataURI(string calldata newMetadataURI) external onlyOwner {
metadataURI = newMetadataURI;
emit MetadataURIUpdated(newMetadataURI);
}
function setFeeRecipients(FeeRecipient[] calldata newRecipients) external onlyOwner {
_setFeeRecipientsCalldata(newRecipients);
}
function transferOwnership(address newOwner) external onlyOwner {
if (newOwner == address(0)) revert ZeroAddress();
address previousOwner = owner;
owner = newOwner;
emit OwnershipTransferred(previousOwner, newOwner);
}
function renounceOwnership() external onlyOwner {
address previousOwner = owner;
owner = address(0);
emit OwnershipTransferred(previousOwner, address(0));
}
function approve(address spender, uint256 value) external returns (bool) {
allowance[msg.sender][spender] = value;
emit Approval(msg.sender, spender, value);
return true;
}
function transfer(address to, uint256 value) external returns (bool) {
_transfer(msg.sender, to, value);
return true;
}
function transferFrom(address from, address to, uint256 value) external returns (bool) {
uint256 allowed = allowance[from][msg.sender];
if (allowed != type(uint256).max) {
if (allowed < value) revert InsufficientAllowance();
unchecked {
allowance[from][msg.sender] = allowed - value;
}
emit Approval(from, msg.sender, allowance[from][msg.sender]);
}
_transfer(from, to, value);
return true;
}
function burn(uint256 value) external {
_burn(msg.sender, value);
}
function burnFrom(address account, uint256 value) external {
uint256 allowed = allowance[account][msg.sender];
if (allowed != type(uint256).max) {
if (allowed < value) revert InsufficientAllowance();
unchecked {
allowance[account][msg.sender] = allowed - value;
}
emit Approval(account, msg.sender, allowance[account][msg.sender]);
}
_burn(account, value);
}
function distributeETH() external onlyOwner {
uint256 amount = address(this).balance;
_distributeETH(amount);
emit ETHDistributed(amount);
}
function distributeERC20(address token) external onlyOwner {
if (token == address(0)) revert ZeroAddress();
uint256 amount = IRobinhoodERC20Minimal(token).balanceOf(address(this));
_distributeERC20(token, amount);
emit ERC20Distributed(token, amount);
}
function _transfer(address from, address to, uint256 value) internal {
if (to == address(0)) revert ZeroAddress();
uint256 fromBalance = balanceOf[from];
if (fromBalance < value) revert InsufficientBalance();
unchecked {
balanceOf[from] = fromBalance - value;
balanceOf[to] += value;
}
emit Transfer(from, to, value);
}
function _mint(address to, uint256 value) internal {
if (to == address(0)) revert ZeroAddress();
totalSupply += value;
balanceOf[to] += value;
emit Transfer(address(0), to, value);
}
function _burn(address from, uint256 value) internal {
uint256 fromBalance = balanceOf[from];
if (fromBalance < value) revert InsufficientBalance();
unchecked {
balanceOf[from] = fromBalance - value;
totalSupply -= value;
}
emit Transfer(from, address(0), value);
}
function _setFeeRecipients(FeeRecipient[] memory recipients) internal {
if (recipients.length > MAX_FEE_RECIPIENTS) revert TooManyFeeRecipients();
delete _feeRecipients;
uint256 totalBps;
address[] memory accounts = new address[](recipients.length);
uint16[] memory bps = new uint16[](recipients.length);
for (uint256 i; i < recipients.length; ++i) {
if (recipients[i].account == address(0)) revert ZeroAddress();
if (recipients[i].bps == 0) revert InvalidFeeBps();
totalBps += recipients[i].bps;
_feeRecipients.push(recipients[i]);
accounts[i] = recipients[i].account;
bps[i] = recipients[i].bps;
}
if (recipients.length != 0 && totalBps != BPS_DENOMINATOR) revert InvalidFeeBps();
emit FeeRecipientsUpdated(accounts, bps);
}
function _setFeeRecipientsCalldata(FeeRecipient[] calldata recipients) internal {
if (recipients.length > MAX_FEE_RECIPIENTS) revert TooManyFeeRecipients();
delete _feeRecipients;
uint256 totalBps;
address[] memory accounts = new address[](recipients.length);
uint16[] memory bps = new uint16[](recipients.length);
for (uint256 i; i < recipients.length; ++i) {
if (recipients[i].account == address(0)) revert ZeroAddress();
if (recipients[i].bps == 0) revert InvalidFeeBps();
totalBps += recipients[i].bps;
_feeRecipients.push(FeeRecipient({account: recipients[i].account, bps: recipients[i].bps}));
accounts[i] = recipients[i].account;
bps[i] = recipients[i].bps;
}
if (recipients.length != 0 && totalBps != BPS_DENOMINATOR) revert InvalidFeeBps();
emit FeeRecipientsUpdated(accounts, bps);
}
function _distributeETH(uint256 amount) internal {
if (_feeRecipients.length == 0 || amount == 0) return;
uint256 sent;
for (uint256 i; i < _feeRecipients.length; ++i) {
uint256 share = i == _feeRecipients.length - 1
? amount - sent
: amount * _feeRecipients[i].bps / BPS_DENOMINATOR;
sent += share;
(bool ok,) = _feeRecipients[i].account.call{value: share}("");
require(ok, "ETH_TRANSFER_FAILED");
}
}
function _distributeERC20(address token, uint256 amount) internal {
if (_feeRecipients.length == 0 || amount == 0) return;
uint256 sent;
for (uint256 i; i < _feeRecipients.length; ++i) {
uint256 share = i == _feeRecipients.length - 1
? amount - sent
: amount * _feeRecipients[i].bps / BPS_DENOMINATOR;
sent += share;
require(IRobinhoodERC20Minimal(token).transfer(_feeRecipients[i].account, share), "ERC20_TRANSFER_FAILED");
}
}
}
contract A20ProtocolRobinhoodLauncher {
uint16 private constant BPS_DENOMINATOR = 10_000;
uint16 public constant OFFICIAL_FEE_BPS = 100;
struct LockedV4Position {
uint256 tokenId;
RobinhoodCurrency currency0;
RobinhoodCurrency currency1;
bool exists;
}
struct LaunchPoolParams {
RobinhoodPoolKey key;
uint160 sqrtPriceX96;
int24 tickLower;
int24 tickUpper;
uint128 amount0Max;
uint128 amount1Max;
uint256 liquidity;
}
struct TokenParams {
string name;
string symbol;
string imageURI;
string metadataURI;
address owner;
}
address public constant ROBINHOOD_V4_POSITION_MANAGER = 0x58daec3116aae6D93017bAAea7749052E8a04fA7;
address public constant ROBINHOOD_PERMIT2 = 0x000000000022D473030F116dDEE9F6B43aC78BA3;
address public constant ROBINHOOD_WETH = 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73;
uint24 public constant DEFAULT_LP_FEE = 10_000;
int24 public constant DEFAULT_TICK_SPACING = 200;
uint128 public constant DEFAULT_TOKEN_AMOUNT_MAX = 100_000_000_000 ether;
uint160 public constant INITIAL_SQRT_PRICE_X96_TOKEN_PER_WETH_10_ETH_MARKET_CAP =
7_974_470_913_604_094_264_140_738_513_890_252;
uint160 public constant INITIAL_SQRT_PRICE_X96_WETH_PER_TOKEN_10_ETH_MARKET_CAP =
787_149_618_249_685_149_291_181;
int24 public constant INITIAL_TICK_TOKEN_PER_WETH_10_ETH_MARKET_CAP = 230_400;
int24 public constant INITIAL_TICK_WETH_PER_TOKEN_10_ETH_MARKET_CAP = -230_400;
int24 public constant DEFAULT_TOKEN1_TICK_LOWER = 120_000;
int24 public constant DEFAULT_TOKEN1_TICK_UPPER = 230_400;
int24 public constant DEFAULT_TOKEN0_TICK_LOWER = -230_400;
int24 public constant DEFAULT_TOKEN0_TICK_UPPER = -120_000;
uint160 private constant DEFAULT_TOKEN1_SQRT_LOWER = 31_953_335_214_378_312_554_014_683_580_590;
uint160 private constant DEFAULT_TOKEN1_SQRT_UPPER = 7_974_470_913_604_094_264_140_738_513_890_252;
uint160 private constant DEFAULT_TOKEN0_SQRT_LOWER = 787_149_618_249_685_149_291_181;
uint160 private constant DEFAULT_TOKEN0_SQRT_UPPER = 196_445_901_289_268_864_651_836_582;
uint256 private constant Q96 = 2 ** 96;
uint256 private constant MAX_SALT_ATTEMPTS = 512;
uint256 public constant MAX_LOCKED_TOKEN_DUST = 100_000;
bytes1 private constant ACTION_MINT_POSITION = 0x02;
bytes1 private constant ACTION_SETTLE_PAIR = 0x0d;
bytes1 private constant ACTION_DECREASE_LIQUIDITY = 0x01;
bytes1 private constant ACTION_TAKE_PAIR = 0x11;
IRobinhoodUniswapV4PositionManager public immutable positionManager;
IRobinhoodPermit2AllowanceTransfer public immutable permit2;
address public immutable officialFeeRecipient;
mapping(address => LockedV4Position) public lockedV4Positions;
uint256 public launchNonce;
bool private _collectingFees;
event TokenLaunched(
address indexed token,
address indexed owner,
uint256 indexed v4PositionId,
RobinhoodPoolKey poolKey,
int24 tickLower,
int24 tickUpper,
uint256 tokenAmountMax,
uint256 liquidity
);
event V4FeesCollectedAndDistributed(
address indexed token,
address indexed caller,
uint256 indexed v4PositionId,
uint256 amount0,
uint256 amount1
);
event OfficialFeePaid(address indexed token, address indexed recipient, address indexed currency, uint256 amount);
event TokenSaltSelected(address indexed token, bytes32 indexed salt, uint256 indexed launchNonce);
error ZeroAddress();
error ETHNotAccepted();
error V4PositionNotLocked();
error NoFeeRecipients();
error ReentrantCall();
error NoValidTokenAddress();
error ExcessTokenDust(uint256 remaining);
modifier nonReentrant() {
if (_collectingFees) revert ReentrantCall();
_collectingFees = true;
_;
_collectingFees = false;
}
constructor(address officialFeeRecipient_) {
if (officialFeeRecipient_ == address(0)) revert ZeroAddress();
positionManager = IRobinhoodUniswapV4PositionManager(ROBINHOOD_V4_POSITION_MANAGER);
permit2 = IRobinhoodPermit2AllowanceTransfer(ROBINHOOD_PERMIT2);
officialFeeRecipient = officialFeeRecipient_;
}
receive() external payable {}
function createTokenAndLaunch(
TokenParams calldata tokenParams,
RobinhoodLaunchToken.FeeRecipient[] calldata feeRecipients
) external payable returns (RobinhoodLaunchToken token, uint256 v4PositionId) {
if (msg.value != 0) revert ETHNotAccepted();
if (tokenParams.owner == address(0)) revert ZeroAddress();
RobinhoodLaunchToken.FeeRecipient[] memory feeRecipientsMemory =
new RobinhoodLaunchToken.FeeRecipient[](feeRecipients.length);
for (uint256 i; i < feeRecipients.length; ++i) {
feeRecipientsMemory[i] = feeRecipients[i];
}
token = _deployLaunchToken(tokenParams, feeRecipientsMemory);
LaunchPoolParams memory poolParams = _buildLaunchPoolParams(address(token));
token.approve(address(permit2), type(uint256).max);
permit2.approve(address(token), address(positionManager), type(uint160).max, type(uint48).max);
positionManager.initializePool(poolParams.key, poolParams.sqrtPriceX96);
v4PositionId = positionManager.nextTokenId();
bytes memory actions = abi.encodePacked(ACTION_MINT_POSITION, ACTION_SETTLE_PAIR);
bytes[] memory params = new bytes[](2);
params[0] = abi.encode(
poolParams.key,
poolParams.tickLower,
poolParams.tickUpper,
poolParams.liquidity,
poolParams.amount0Max,
poolParams.amount1Max,
address(this),
bytes("")
);
params[1] = abi.encode(poolParams.key.currency0, poolParams.key.currency1);
positionManager.modifyLiquidities(abi.encode(actions, params), block.timestamp);
lockedV4Positions[address(token)] = LockedV4Position({
tokenId: v4PositionId,
currency0: poolParams.key.currency0,
currency1: poolParams.key.currency1,
exists: true
});
uint256 remaining = token.balanceOf(address(this));
if (remaining > MAX_LOCKED_TOKEN_DUST) revert ExcessTokenDust(remaining);
emit TokenLaunched(
address(token),
tokenParams.owner,
v4PositionId,
poolParams.key,
poolParams.tickLower,
poolParams.tickUpper,
DEFAULT_TOKEN_AMOUNT_MAX,
poolParams.liquidity
);
}
function collectAndDistributeV4Fees(address token, uint256 deadline) external nonReentrant {
LockedV4Position memory lockedPosition = lockedV4Positions[token];
if (!lockedPosition.exists) revert V4PositionNotLocked();
RobinhoodLaunchToken launchToken = RobinhoodLaunchToken(payable(token));
if (launchToken.feeRecipientsLength() == 0) revert NoFeeRecipients();
uint256 balance0Before = _currencyBalance(lockedPosition.currency0);
uint256 balance1Before = _currencyBalance(lockedPosition.currency1);
bytes memory actions = abi.encodePacked(ACTION_DECREASE_LIQUIDITY, ACTION_TAKE_PAIR);
bytes[] memory params = new bytes[](2);
params[0] = abi.encode(lockedPosition.tokenId, uint256(0), uint128(0), uint128(0), bytes(""));
params[1] = abi.encode(lockedPosition.currency0, lockedPosition.currency1, address(this));
positionManager.modifyLiquidities(abi.encode(actions, params), deadline);
uint256 amount0 = _currencyBalance(lockedPosition.currency0) - balance0Before;
uint256 amount1 = _currencyBalance(lockedPosition.currency1) - balance1Before;
_distributeLaunchFees(launchToken, lockedPosition.currency0, amount0);
_distributeLaunchFees(launchToken, lockedPosition.currency1, amount1);
emit V4FeesCollectedAndDistributed(token, msg.sender, lockedPosition.tokenId, amount0, amount1);
}
function _currencyBalance(RobinhoodCurrency currency) internal view returns (uint256) {
address token = RobinhoodCurrency.unwrap(currency);
return token == address(0) ? address(this).balance : IRobinhoodERC20Minimal(token).balanceOf(address(this));
}
function _distributeLaunchFees(RobinhoodLaunchToken launchToken, RobinhoodCurrency currency, uint256 amount) internal {
if (amount == 0) return;
uint256 recipientsLength = launchToken.feeRecipientsLength();
if (recipientsLength == 0) revert NoFeeRecipients();
address token = RobinhoodCurrency.unwrap(currency);
uint256 officialFee = amount * OFFICIAL_FEE_BPS / BPS_DENOMINATOR;
uint256 userFeeAmount = amount - officialFee;
if (officialFee != 0) {
_transferCurrency(token, officialFeeRecipient, officialFee);
emit OfficialFeePaid(address(launchToken), officialFeeRecipient, token, officialFee);
}
if (userFeeAmount == 0) return;
uint256 sent;
for (uint256 i; i < recipientsLength; ++i) {
(address account, uint16 bps) = launchToken.feeRecipientAt(i);
uint256 share = i == recipientsLength - 1 ? userFeeAmount - sent : userFeeAmount * bps / BPS_DENOMINATOR;
sent += share;
_transferCurrency(token, account, share);
}
}
function _transferCurrency(address token, address to, uint256 amount) internal {
if (token == address(0)) {
(bool ok,) = to.call{value: amount}("");
require(ok, "ETH_TRANSFER_FAILED");
} else {
require(IRobinhoodERC20Minimal(token).transfer(to, amount), "ERC20_TRANSFER_FAILED");
}
}
function _buildLaunchPoolParams(address token) internal pure returns (LaunchPoolParams memory params) {
if (uint160(token) >= uint160(ROBINHOOD_WETH)) revert NoValidTokenAddress();
params.sqrtPriceX96 = INITIAL_SQRT_PRICE_X96_WETH_PER_TOKEN_10_ETH_MARKET_CAP;
params.tickLower = DEFAULT_TOKEN0_TICK_LOWER;
params.tickUpper = DEFAULT_TOKEN0_TICK_UPPER;
params.amount0Max = DEFAULT_TOKEN_AMOUNT_MAX;
params.liquidity =
_liquidityForAmount0(DEFAULT_TOKEN0_SQRT_LOWER, DEFAULT_TOKEN0_SQRT_UPPER, DEFAULT_TOKEN_AMOUNT_MAX);
params.key = RobinhoodPoolKey({
currency0: RobinhoodCurrency.wrap(token),
currency1: RobinhoodCurrency.wrap(ROBINHOOD_WETH),
fee: DEFAULT_LP_FEE,
tickSpacing: DEFAULT_TICK_SPACING,
hooks: IRobinhoodHooks(address(0))
});
}
function _liquidityForAmount0(uint160 sqrtPriceAX96, uint160 sqrtPriceBX96, uint256 amount0)
internal
pure
returns (uint256)
{
uint256 intermediate = amount0 * uint256(sqrtPriceAX96) / Q96;
uint256 liquidity = intermediate * uint256(sqrtPriceBX96) / (uint256(sqrtPriceBX96) - uint256(sqrtPriceAX96));
return liquidity;
}
function _deployLaunchToken(
TokenParams calldata tokenParams,
RobinhoodLaunchToken.FeeRecipient[] memory feeRecipients
) internal returns (RobinhoodLaunchToken token) {
bytes32 initCodeHash = keccak256(
abi.encodePacked(
type(RobinhoodLaunchToken).creationCode,
abi.encode(
tokenParams.name,
tokenParams.symbol,
tokenParams.imageURI,
tokenParams.metadataURI,
tokenParams.owner,
address(this),
feeRecipients
)
)
);
uint256 currentLaunchNonce = launchNonce++;
bytes32 salt = _findTokenSalt(initCodeHash, currentLaunchNonce);
token = new RobinhoodLaunchToken{salt: salt}(
tokenParams.name,
tokenParams.symbol,
tokenParams.imageURI,
tokenParams.metadataURI,
tokenParams.owner,
address(this),
feeRecipients
);
if (uint160(address(token)) >= uint160(ROBINHOOD_WETH)) revert NoValidTokenAddress();
emit TokenSaltSelected(address(token), salt, currentLaunchNonce);
}
function _findTokenSalt(bytes32 initCodeHash, uint256 currentLaunchNonce) internal view returns (bytes32 salt) {
bytes32 seed = keccak256(abi.encode(block.chainid, msg.sender, currentLaunchNonce, initCodeHash));
for (uint256 attempt; attempt < MAX_SALT_ATTEMPTS; ++attempt) {
salt = keccak256(abi.encode(seed, attempt));
address predicted = address(
uint160(
uint256(keccak256(abi.encodePacked(bytes1(0xff), address(this), salt, initCodeHash)))
)
);
if (uint160(predicted) < uint160(ROBINHOOD_WETH)) return salt;
}
revert NoValidTokenAddress();
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "officialFeeRecipient_",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "ETHNotAccepted",
"type": "error",
"inputs": []
},
{
"name": "ExcessTokenDust",
"type": "error",
"inputs": [
{
"name": "remaining",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "NoFeeRecipients",
"type": "error",
"inputs": []
},
{
"name": "NoValidTokenAddress",
"type": "error",
"inputs": []
},
{
"name": "ReentrantCall",
"type": "error",
"inputs": []
},
{
"name": "V4PositionNotLocked",
"type": "error",
"inputs": []
},
{
"name": "ZeroAddress",
"type": "error",
"inputs": []
},
{
"name": "OfficialFeePaid",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "recipient",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "currency",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "TokenLaunched",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "v4PositionId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "poolKey",
"type": "tuple",
"indexed": false,
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "RobinhoodCurrency"
},
{
"name": "currency1",
"type": "address",
"internalType": "RobinhoodCurrency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IRobinhoodHooks"
}
],
"internalType": "struct RobinhoodPoolKey"
},
{
"name": "tickLower",
"type": "int24",
"indexed": false,
"internalType": "int24"
},
{
"name": "tickUpper",
"type": "int24",
"indexed": false,
"internalType": "int24"
},
{
"name": "tokenAmountMax",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "liquidity",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "TokenSaltSelected",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "salt",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "launchNonce",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "V4FeesCollectedAndDistributed",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "caller",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "v4PositionId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "amount0",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "amount1",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "DEFAULT_LP_FEE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint24",
"internalType": "uint24"
}
],
"stateMutability": "view"
},
{
"name": "DEFAULT_TICK_SPACING",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "view"
},
{
"name": "DEFAULT_TOKEN0_TICK_LOWER",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "view"
},
{
"name": "DEFAULT_TOKEN0_TICK_UPPER",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "view"
},
{
"name": "DEFAULT_TOKEN1_TICK_LOWER",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "view"
},
{
"name": "DEFAULT_TOKEN1_TICK_UPPER",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "view"
},
{
"name": "DEFAULT_TOKEN_AMOUNT_MAX",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint128",
"internalType": "uint128"
}
],
"stateMutability": "view"
},
{
"name": "INITIAL_SQRT_PRICE_X96_TOKEN_PER_WETH_10_ETH_MARKET_CAP",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint160",
"internalType": "uint160"
}
],
"stateMutability": "view"
},
{
"name": "INITIAL_SQRT_PRICE_X96_WETH_PER_TOKEN_10_ETH_MARKET_CAP",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint160",
"internalType": "uint160"
}
],
"stateMutability": "view"
},
{
"name": "INITIAL_TICK_TOKEN_PER_WETH_10_ETH_MARKET_CAP",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "view"
},
{
"name": "INITIAL_TICK_WETH_PER_TOKEN_10_ETH_MARKET_CAP",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "view"
},
{
"name": "MAX_LOCKED_TOKEN_DUST",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "OFFICIAL_FEE_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "ROBINHOOD_PERMIT2",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "ROBINHOOD_V4_POSITION_MANAGER",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "ROBINHOOD_WETH",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "collectAndDistributeV4Fees",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "deadline",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "createTokenAndLaunch",
"type": "function",
"inputs": [
{
"name": "tokenParams",
"type": "tuple",
"components": [
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"internalType": "string"
},
{
"name": "imageURI",
"type": "string",
"internalType": "string"
},
{
"name": "metadataURI",
"type": "string",
"internalType": "string"
},
{
"name": "owner",
"type": "address",
"internalType": "address"
}
],
"internalType": "struct A20ProtocolRobinhoodLauncher.TokenParams"
},
{
"name": "feeRecipients",
"type": "tuple[]",
"components": [
{
"name": "account",
"type": "address",
"internalType": "address"
},
{
"name": "bps",
"type": "uint16",
"internalType": "uint16"
}
],
"internalType": "struct RobinhoodLaunchToken.FeeRecipient[]"
}
],
"outputs": [
{
"name": "token",
"type": "address",
"internalType": "contract RobinhoodLaunchToken"
},
{
"name": "v4PositionId",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "payable"
},
{
"name": "launchNonce",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "lockedV4Positions",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "tokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "currency0",
"type": "address",
"internalType": "RobinhoodCurrency"
},
{
"name": "currency1",
"type": "address",
"internalType": "RobinhoodCurrency"
},
{
"name": "exists",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "officialFeeRecipient",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "permit2",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IRobinhoodPermit2AllowanceTransfer"
}
],
"stateMutability": "view"
},
{
"name": "positionManager",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IRobinhoodUniswapV4PositionManager"
}
],
"stateMutability": "view"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x60e060405234801561000f575f5ffd5b5060405161442838038061442883398101604081905261002e91610091565b6001600160a01b0381166100555760405163d92e233d60e01b815260040160405180910390fd5b7358daec3116aae6d93017baaea7749052e8a04fa76080526e22d473030f116ddee9f6b43ac78ba360a0526001600160a01b031660c0526100be565b5f602082840312156100a1575f5ffd5b81516001600160a01b03811681146100b7575f5ffd5b9392505050565b60805160a05160c0516143016101275f395f81816102a00152818161109801526110c901525f81816101be015281816109a50152610a7d01525f81816102fa0152818161071b01528181610a4201528181610af001528181610b6a0152610d0801526143015ff3fe60806040526004361061013f575f3560e01c80637e850e86116100b3578063d07321cb1161006d578063d07321cb14610184578063d5733855146103db578063e4bb1a0c146103fd578063e9a037df1461042f578063f3eb61e414610444578063f7c908cb14610389575f5ffd5b80637e850e861461031c5780639eea4a3a1461033e578063a36f510914610365578063a9a1e25214610389578063b0e6749a146103a0578063c488aedc146103b4575f5ffd5b80633d715c56116101045780633d715c561461022f5780633db90e2f146102455780634bc1bf14146102665780634e0666491461028f57806354811e96146102c2578063791b98bc146102e9575f5ffd5b806306abd66d1461014a5780630dcb9c881461018457806312261ee7146101ad57806315b749f7146101e0578063192a0bcb146101f7575f5ffd5b3661014657005b5f5ffd5b348015610155575f5ffd5b5061016769a6af776004abf4e612ad81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561018f575f5ffd5b5061019a6203840081565b60405160029190910b815260200161017b565b3480156101b8575f5ffd5b506101677f000000000000000000000000000000000000000000000000000000000000000081565b3480156101eb575f5ffd5b5061019a6201d4bf1981565b348015610202575f5ffd5b506102176c01431e0fae6d7217caa000000081565b6040516001600160801b03909116815260200161017b565b34801561023a575f5ffd5b5061019a6201d4c081565b348015610250575f5ffd5b5061026461025f366004611853565b6104c9565b005b348015610271575f5ffd5b5061027b61271081565b60405162ffffff909116815260200161017b565b34801561029a575f5ffd5b506101677f000000000000000000000000000000000000000000000000000000000000000081565b3480156102cd575f5ffd5b50610167730bd7d308f8e1639fab988df18a8011f41eacad7381565b3480156102f4575f5ffd5b506101677f000000000000000000000000000000000000000000000000000000000000000081565b348015610327575f5ffd5b506101676e22d473030f116ddee9f6b43ac78ba381565b348015610349575f5ffd5b50610352606481565b60405161ffff909116815260200161017b565b348015610370575f5ffd5b5061037b620186a081565b60405190815260200161017b565b348015610394575f5ffd5b5061019a620383ff1981565b3480156103ab575f5ffd5b5061019a60c881565b3480156103bf575f5ffd5b506101677358daec3116aae6d93017baaea7749052e8a04fa781565b3480156103e6575f5ffd5b506101676e01892bf93719f13782793d830c6bcc81565b61041061040b36600461187d565b610867565b604080516001600160a01b03909316835260208301919091520161017b565b34801561043a575f5ffd5b5061037b60015481565b34801561044f575f5ffd5b5061049761045e36600461191c565b5f6020819052908152604090208054600182015460029092015490916001600160a01b039081169190811690600160a01b900460ff1684565b60405161017b94939291909384526001600160a01b039283166020850152911660408301521515606082015260800190565b60025460ff16156104ed576040516306fda65d60e31b815260040160405180910390fd5b6002805460ff1916600190811782556001600160a01b038085165f9081526020818152604091829020825160808101845281548152948101548416918501919091529093015490811692820192909252600160a01b90910460ff1615156060820181905261056e57604051631c9bf36f60e11b815260040160405180910390fd5b5f839050806001600160a01b031663300fca826040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d29190611937565b5f036105f1576040516317799fe560e01b815260040160405180910390fd5b5f6105ff8360200151610f4f565b90505f61060f8460400151610f4f565b60408051600160f81b6020820152601160f81b602182015281516002818303810182526022830181815260828401909452939450925f92916042015b606081526020019060019003908161064b575050865160408051602080820183525f80835292519495506106859483928392909101611990565b604051602081830303815290604052815f815181106106a6576106a66119d7565b602002602001018190525085602001518660400151306040516020016106ec939291906001600160a01b0393841681529183166020830152909116604082015260600190565b6040516020818303038152906040528160018151811061070e5761070e6119d7565b60200260200101819052507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dd46508f838360405160200161075b9291906119eb565b604051602081830303815290604052896040518363ffffffff1660e01b8152600401610788929190611a60565b5f604051808303815f87803b15801561079f575f5ffd5b505af11580156107b1573d5f5f3e3d5ffd5b505050505f846107c48860200151610f4f565b6107ce9190611a95565b90505f846107df8960400151610f4f565b6107e99190611a95565b90506107fa87896020015184610fd4565b61080987896040015183610fd4565b8751604080518481526020810184905233916001600160a01b038e16917ff9539e7d3da3ea7c4c0b215717a413284630541852e9f2875f6d7882f35ef85e910160405180910390a450506002805460ff191690555050505050505050565b5f803415610887576040516248c6b960e61b815260040160405180910390fd5b5f61089860a087016080880161191c565b6001600160a01b0316036108bf5760405163d92e233d60e01b815260040160405180910390fd5b5f8367ffffffffffffffff8111156108d9576108d961194e565b60405190808252806020026020018201604052801561091d57816020015b604080518082019091525f80825260208201528152602001906001900390816108f75790505b5090505f5b848110156109775785858281811061093c5761093c6119d7565b9050604002018036038101906109529190611ab7565b828281518110610964576109646119d7565b6020908102919091010152600101610922565b50610982868261122d565b92505f61098e84611410565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301529192509085169063095ea7b3906044016020604051808303815f875af11580156109fe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a229190611b22565b506040516387517c4560e01b81526001600160a01b0385811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526044820181905265ffffffffffff60648301527f000000000000000000000000000000000000000000000000000000000000000016906387517c45906084015f604051808303815f87803b158015610abe575f5ffd5b505af1158015610ad0573d5f5f3e3d5ffd5b50508251602084015160405163f702040560e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016945063f70204059350610b27929190600401611b84565b6020604051808303815f875af1158015610b43573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b679190611baa565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bc4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610be89190611937565b60408051600160f91b6020820152600d60f81b602182015281516002818303810182526022830181815260828401909452939650925f92916042015b6060815260200190600190039081610c24579050509050825f0151836040015184606001518560c0015186608001518760a001513060405180602001604052805f815250604051602001610c7f989796959493929190611bca565b604051602081830303815290604052815f81518110610ca057610ca06119d7565b6020908102919091018101919091528351805190820151604051610cd993016001600160a01b0392831681529116602082015260400190565b60405160208183030381529060405281600181518110610cfb57610cfb6119d7565b60200260200101819052507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dd46508f8383604051602001610d489291906119eb565b604051602081830303815290604052426040518363ffffffff1660e01b8152600401610d75929190611a60565b5f604051808303815f87803b158015610d8c575f5ffd5b505af1158015610d9e573d5f5f3e3d5ffd5b5050604080516080810182528881528651516001600160a01b039081166020808401918252895181015183168486019081526001606086018181528f86165f8181529485905288852097518855945191870180546001600160a01b031916928716929092179091559051600290950180549151959094166001600160a81b031990911617600160a01b941515949094029390931790915591516370a0823160e01b81523060048201529093509091506370a0823190602401602060405180830381865afa158015610e71573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e959190611937565b9050620186a0811115610ec35760405163c97a89ef60e01b8152600481018290526024015b60405180910390fd5b85610ed460a08c0160808d0161191c565b6001600160a01b0316886001600160a01b03167f5cc3c6d18d5d3de9c7479fbab19ba7c75f24d34bb1d1bb3a3e892c5f89af58c3875f0151886040015189606001516c01431e0fae6d7217caa00000008b60c00151604051610f3a959493929190611c41565b60405180910390a45050505050935093915050565b5f816001600160a01b03811615610fcb576040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa158015610fa2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc69190611937565b610fcd565b475b9392505050565b805f03610fe057505050565b5f836001600160a01b031663300fca826040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110419190611937565b9050805f03611063576040516317799fe560e01b815260040160405180910390fd5b825f612710611073606486611c82565b61107d9190611c99565b90505f61108a8286611a95565b90508115611135576110bd837f00000000000000000000000000000000000000000000000000000000000000008461154e565b826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b03167f4943e83293918107ba823ef7558c70a81f5cdc5189d4c41eb7e240576f42fe598560405161112c91815260200190565b60405180910390a45b805f036111455750505050505050565b5f5f5b85811015611222576040516353d8489160e11b8152600481018290525f9081906001600160a01b038c169063a7b09122906024016040805180830381865afa158015611196573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ba9190611cb8565b90925090505f6111cb60018a611a95565b84146111f1576127106111e261ffff841688611c82565b6111ec9190611c99565b6111fb565b6111fb8587611a95565b90506112078186611cf0565b945061121488848361154e565b505050806001019050611148565b505050505050505050565b5f5f6040518060200161123f9061182f565b601f1982820381018352601f9091011660405261125c8580611d03565b6112696020880188611d03565b61127660408a018a611d03565b61128360608c018c611d03565b61129360a08e0160808f0161191c565b308d6040516020016112af9b9a99989796959493929190611d75565b60408051601f19818403018152908290526112cd9291602001611e59565b6040516020818303038152906040528051906020012090505f60015f8154809291906112f890611e75565b9190505590505f61130983836116b0565b9050806113168780611d03565b61132360208a018a611d03565b61133060408c018c611d03565b61133d60608e018e611d03565b8e6080016020810190611350919061191c565b308f60405161135e9061182f565b6113729b9a99989796959493929190611d75565b8190604051809103905ff590508015801561138f573d5f5f3e3d5ffd5b509350730bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b038516106113cf5760405163769aca5560e01b815260040160405180910390fd5b8181856001600160a01b03167f9799c845bbfc5322d25d497a00acc393b1110925af87141dc835293f3386ecab60405160405180910390a450505092915050565b60408051610180810182525f60e082018181526101008301829052610120830182905261014083018290526101608301829052825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152730bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b038316106114ac5760405163769aca5560e01b815260040160405180910390fd5b69a6af776004abf4e612ad60208201819052620383ff1960408301526201d4bf1960608301526c01431e0fae6d7217caa0000000608083018190526114fe91906aa27f09a5ceadaf553b3ca6906117cb565b60c08201526040805160a0810182526001600160a01b039093168352730bd7d308f8e1639fab988df18a8011f41eacad7360208401526127109083015260c860608301525f608083015290815290565b6001600160a01b0383166115f7575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146115a5576040519150601f19603f3d011682016040523d82523d5f602084013e6115aa565b606091505b50509050806115f15760405162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b6044820152606401610eba565b50505050565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af1158015611643573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116679190611b22565b6116ab5760405162461bcd60e51b8152602060048201526015602482015274115490cc8c17d514905394d1915497d19052531151605a1b6044820152606401610eba565b505050565b60408051466020820152339181019190915260608101829052608081018390525f90819060a0016040516020818303038152906040528051906020012090505f5b6102008110156117ab57604080516020808201859052818301849052825180830384018152606080840185528151918301919091206001600160f81b031960808501523090911b6bffffffffffffffffffffffff191660818401526095830181905260b58084018a90528451808503909101815260d59093019093528151910120909350730bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b03821610156117a2575050506117c5565b506001016116f1565b5060405163769aca5560e01b815260040160405180910390fd5b92915050565b5f80600160601b6117e56001600160a01b03871685611c82565b6117ef9190611c99565b90505f6118086001600160a01b03808816908716611a95565b61181b6001600160a01b03871684611c82565b6118259190611c99565b9695505050505050565b61243e80611e8e83390190565b6001600160a01b0381168114611850575f5ffd5b50565b5f5f60408385031215611864575f5ffd5b823561186f8161183c565b946020939093013593505050565b5f5f5f6040848603121561188f575f5ffd5b833567ffffffffffffffff8111156118a5575f5ffd5b840160a081870312156118b6575f5ffd5b9250602084013567ffffffffffffffff8111156118d1575f5ffd5b8401601f810186136118e1575f5ffd5b803567ffffffffffffffff8111156118f7575f5ffd5b8660208260061b840101111561190b575f5ffd5b939660209190910195509293505050565b5f6020828403121561192c575f5ffd5b8135610fcd8161183c565b5f60208284031215611947575f5ffd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b8581528460208201526001600160801b03841660408201526001600160801b038316606082015260a060808201525f6119cc60a0830184611962565b979650505050505050565b634e487b7160e01b5f52603260045260245ffd5b604081525f6119fd6040830185611962565b828103602084015280845180835260208301915060208160051b840101602087015f5b83811015611a5257601f19868403018552611a3c838351611962565b6020958601959093509190910190600101611a20565b509098975050505050505050565b604081525f611a726040830185611962565b90508260208301529392505050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156117c5576117c5611a81565b61ffff81168114611850575f5ffd5b5f6040828403128015611ac8575f5ffd5b506040805190810167ffffffffffffffff81118282101715611af857634e487b7160e01b5f52604160045260245ffd5b6040528235611b068161183c565b81526020830135611b1681611aa8565b60208201529392505050565b5f60208284031215611b32575f5ffd5b81518015158114610fcd575f5ffd5b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b60c08101611b928285611b41565b6001600160a01b039290921660a09190910152919050565b5f60208284031215611bba575f5ffd5b81518060020b8114610fcd575f5ffd5b611bd4818a611b41565b8760020b60a08201528660020b60c08201528560e08201526001600160801b0385166101008201526001600160801b03841661012082015260018060a01b0383166101408201526101806101608201525f611c33610180830184611962565b9a9950505050505050505050565b6101208101611c508288611b41565b8560020b60a08301528460020b60c08301526001600160801b03841660e0830152826101008301529695505050505050565b80820281158282048414176117c5576117c5611a81565b5f82611cb357634e487b7160e01b5f52601260045260245ffd5b500490565b5f5f60408385031215611cc9575f5ffd5b8251611cd48161183c565b6020840151909250611ce581611aa8565b809150509250929050565b808201808211156117c5576117c5611a81565b5f5f8335601e19843603018112611d18575f5ffd5b83018035915067ffffffffffffffff821115611d32575f5ffd5b602001915036819003821315611d46575f5ffd5b9250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60e081525f611d8860e083018d8f611d4d565b8281036020840152611d9b818c8e611d4d565b90508281036040840152611db0818a8c611d4d565b90508281036060840152611dc581888a611d4d565b6001600160a01b038781166080860152861660a085015283810360c0850152845180825260208087019350909101905f5b81811015611e2d57835180516001600160a01b0316845260209081015161ffff168185015290930192604090920191600101611df6565b50909f9e505050505050505050505050505050565b5f81518060208401855e5f93019283525090919050565b5f611e6d611e678386611e42565b84611e42565b949350505050565b5f60018201611e8657611e86611a81565b506001019056fe608060405234801561000f575f5ffd5b5060405161243e38038061243e83398101604081905261002e9161071b565b6001600160a01b038316158061004b57506001600160a01b038216155b156100695760405163d92e233d60e01b815260040160405180910390fd5b5f61007488826108ae565b50600161008187826108ae565b50600261008e86826108ae565b50600361009b85826108ae565b50600580546001600160a01b0319166001600160a01b0385161790556100ce826c01431e0fae6d7217caa0000000610186565b6100d781610233565b6040516001600160a01b038416905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a37f9b9cd1b6d10196260eb379c94feef6204d1e0244b38efe9d31be6ad4055f22ea8560405161013b919061096c565b60405180910390a17fefafb90526da1636e1335eac0151301742fb755d986954c613b90e891778ba3984604051610172919061096c565b60405180910390a150505050505050610a67565b6001600160a01b0382166101ad5760405163d92e233d60e01b815260040160405180910390fd5b8060045f8282546101be91906109a1565b90915550506001600160a01b0382165f90815260066020526040812080548392906101ea9084906109a1565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b601481511115610256576040516333adec1360e21b815260040160405180910390fd5b61026160085f610529565b5f5f82516001600160401b0381111561027c5761027c61056b565b6040519080825280602002602001820160405280156102a5578160200160208202803683370190505b5090505f83516001600160401b038111156102c2576102c261056b565b6040519080825280602002602001820160405280156102eb578160200160208202803683370190505b5090505f5b84518110156104b9575f6001600160a01b0316858281518110610315576103156109c6565b60200260200101515f01516001600160a01b0316036103475760405163d92e233d60e01b815260040160405180910390fd5b848181518110610359576103596109c6565b60200260200101516020015161ffff165f0361038857604051638bff87cf60e01b815260040160405180910390fd5b84818151811061039a5761039a6109c6565b60200260200101516020015161ffff16846103b591906109a1565b935060088582815181106103cb576103cb6109c6565b60209081029190910181015182546001810184555f93845292829020815193018054919092015161ffff16600160a01b026001600160b01b03199091166001600160a01b03909316929092179190911790558451859082908110610431576104316109c6565b60200260200101515f015183828151811061044e5761044e6109c6565b60200260200101906001600160a01b031690816001600160a01b031681525050848181518110610480576104806109c6565b60200260200101516020015182828151811061049e5761049e6109c6565b61ffff909216602092830291909101909101526001016102f0565b508351158015906104cc57506127108314155b156104ea57604051638bff87cf60e01b815260040160405180910390fd5b7fd07cc7c1e09e9b6d51353256e2187d7d47126dab27451a953524f22f85d8c848828260405161051b9291906109da565b60405180910390a150505050565b5080545f8255905f5260205f20906105419190610543565b565b5f5b808211156105665780830180546001600160b01b0319169055600101610545565b505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156105a1576105a161056b565b60405290565b604051601f8201601f191681016001600160401b03811182821017156105cf576105cf61056b565b604052919050565b5f82601f8301126105e6575f5ffd5b81516001600160401b038111156105ff576105ff61056b565b610612601f8201601f19166020016105a7565b818152846020838601011115610626575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b0381168114610658575f5ffd5b919050565b5f82601f83011261066c575f5ffd5b81516001600160401b038111156106855761068561056b565b61069460208260051b016105a7565b8082825260208201915060208360061b8601019250858311156106b5575f5ffd5b602085015b8381101561071157604081880312156106d1575f5ffd5b6106d961057f565b6106e282610642565b8152602082015161ffff811681146106f8575f5ffd5b60208281019190915290845292909201916040016106ba565b5095945050505050565b5f5f5f5f5f5f5f60e0888a031215610731575f5ffd5b87516001600160401b03811115610746575f5ffd5b6107528a828b016105d7565b60208a015190985090506001600160401b0381111561076f575f5ffd5b61077b8a828b016105d7565b60408a015190975090506001600160401b03811115610798575f5ffd5b6107a48a828b016105d7565b60608a015190965090506001600160401b038111156107c1575f5ffd5b6107cd8a828b016105d7565b9450506107dc60808901610642565b92506107ea60a08901610642565b60c08901519092506001600160401b03811115610805575f5ffd5b6108118a828b0161065d565b91505092959891949750929550565b600181811c9082168061083457607f821691505b60208210810361085257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610566578282111561056657805f5260205f20601f840160051c602085101561088357505f5b90810190601f840160051c035f5b818110156108a6575f83820155600101610891565b505050505050565b81516001600160401b038111156108c7576108c761056b565b6108db816108d58454610820565b84610858565b6020601f82116001811461090d575f83156108f65750848201515b5f19600385901b1c1916600184901b178455610965565b5f84815260208120601f198516915b8281101561093c578785015182556020948501946001909201910161091c565b508482101561095957868401515f19600387901b60f8161c191681555b505060018360011b0184555b5050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b808201808211156109c057634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52603260045260245ffd5b604080825283519082018190525f9060208501906060840190835b81811015610a1c5783516001600160a01b03168352602093840193909201916001016109f5565b5050838103602080860191909152855180835291810192508501905f5b81811015610a5b57825161ffff16845260209384019390920191600101610a39565b50919695505050505050565b6119ca80610a745f395ff3fe608060405260043610610198575f3560e01c8063750521f5116100e7578063b8b9b54911610087578063cfd94ac911610062578063cfd94ac91461049b578063dd62ed3e146104af578063e1a45218146104e5578063f2fde38b1461050d575f5ffd5b8063b8b9b54914610449578063ba89dfab1461045d578063bce582691461047c575f5ffd5b8063902d55a5116100c2578063902d55a5146103b557806395d89b41146103d5578063a7b09122146103e9578063a9059cbb1461042a575f5ffd5b8063750521f51461034057806379cc67901461035f5780638da5cb5b1461037e575f5ffd5b806318160ddd11610152578063313ce5671161012d578063313ce567146102bc57806342966c68146102e257806370a0823114610301578063715018a61461032c575f5ffd5b806318160ddd1461026657806323b872dd14610289578063300fca82146102a8575f5ffd5b806303ee438c146101a357806304787ca2146101cd57806306fdde03146101ee578063095ea7b3146102025780630adfdcb914610231578063135d088d14610252575f5ffd5b3661019f57005b5f5ffd5b3480156101ae575f5ffd5b506101b761052c565b6040516101c4919061145d565b60405180910390f35b3480156101d8575f5ffd5b506101ec6101e7366004611492565b6105b8565b005b3480156101f9575f5ffd5b506101b761062e565b34801561020d575f5ffd5b5061022161021c36600461151b565b61063a565b60405190151581526020016101c4565b34801561023c575f5ffd5b506102456106a6565b6040516101c49190611543565b34801561025d575f5ffd5b506101b761071b565b348015610271575f5ffd5b5061027b60045481565b6040519081526020016101c4565b348015610294575f5ffd5b506102216102a336600461159e565b610728565b3480156102b3575f5ffd5b5060085461027b565b3480156102c7575f5ffd5b506102d0601281565b60405160ff90911681526020016101c4565b3480156102ed575f5ffd5b506101ec6102fc3660046115d8565b6107ea565b34801561030c575f5ffd5b5061027b61031b3660046115ef565b60066020525f908152604090205481565b348015610337575f5ffd5b506101ec6107f7565b34801561034b575f5ffd5b506101ec61035a366004611492565b61086f565b34801561036a575f5ffd5b506101ec61037936600461151b565b6108d9565b348015610389575f5ffd5b5060055461039d906001600160a01b031681565b6040516001600160a01b0390911681526020016101c4565b3480156103c0575f5ffd5b5061027b6c01431e0fae6d7217caa000000081565b3480156103e0575f5ffd5b506101b7610994565b3480156103f4575f5ffd5b506104086104033660046115d8565b6109a1565b604080516001600160a01b03909316835261ffff9091166020830152016101c4565b348015610435575f5ffd5b5061022161044436600461151b565b6109f9565b348015610454575f5ffd5b506101ec610a0e565b348015610468575f5ffd5b506101ec61047736600461160f565b610a79565b348015610487575f5ffd5b506101ec6104963660046115ef565b610ab2565b3480156104a6575f5ffd5b5061027b601481565b3480156104ba575f5ffd5b5061027b6104c9366004611670565b600760209081525f928352604080842090915290825290205481565b3480156104f0575f5ffd5b506104fa61271081565b60405161ffff90911681526020016101c4565b348015610518575f5ffd5b506101ec6105273660046115ef565b610bbf565b60038054610539906116a1565b80601f0160208091040260200160405190810160405280929190818152602001828054610565906116a1565b80156105b05780601f10610587576101008083540402835291602001916105b0565b820191905f5260205f20905b81548152906001019060200180831161059357829003601f168201915b505050505081565b6005546001600160a01b031633146105e3576040516330cd747160e01b815260040160405180910390fd5b60026105f0828483611743565b507f9b9cd1b6d10196260eb379c94feef6204d1e0244b38efe9d31be6ad4055f22ea82826040516106229291906117fe565b60405180910390a15050565b5f8054610539906116a1565b335f8181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106949086815260200190565b60405180910390a35060015b92915050565b60606008805480602002602001604051908101604052809291908181526020015f905b82821015610712575f84815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900461ffff16818301528252600190920191016106c9565b50505050905090565b60028054610539906116a1565b6001600160a01b0383165f9081526007602090815260408083203384529091528120545f1981146107d45782811015610774576040516313be252b60e01b815260040160405180910390fd5b6001600160a01b0385165f81815260076020908152604080832033808552908352928190208786039081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b6107df858585610c62565b506001949350505050565b6107f43382610d2f565b50565b6005546001600160a01b03163314610822576040516330cd747160e01b815260040160405180910390fd5b600580546001600160a01b031981169091556040516001600160a01b03909116905f9082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6005546001600160a01b0316331461089a576040516330cd747160e01b815260040160405180910390fd5b60036108a7828483611743565b507fefafb90526da1636e1335eac0151301742fb755d986954c613b90e891778ba3982826040516106229291906117fe565b6001600160a01b0382165f9081526007602090815260408083203384529091529020545f1981146109855781811015610925576040516313be252b60e01b815260040160405180910390fd5b6001600160a01b0383165f81815260076020908152604080832033808552908352928190208686039081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b61098f8383610d2f565b505050565b60018054610539906116a1565b5f5f5f600884815481106109b7576109b761182c565b5f918252602091829020604080518082019091529101546001600160a01b038116808352600160a01b90910461ffff1691909201819052909590945092505050565b5f610a05338484610c62565b50600192915050565b6005546001600160a01b03163314610a39576040516330cd747160e01b815260040160405180910390fd5b47610a4381610dc7565b6040518181527f0f73c15fc09bc757caafe571e052b89857e226540f25c1843b6f48923e88684a9060200160405180910390a150565b6005546001600160a01b03163314610aa4576040516330cd747160e01b815260040160405180910390fd5b610aae8282610f21565b5050565b6005546001600160a01b03163314610add576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b038116610b045760405163d92e233d60e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610b48573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6c9190611840565b9050610b788282611297565b816001600160a01b03167f4e1e88cf5ade6eb9bfc4458c50e0b120968403b23b01de2106d080851f630a5982604051610bb391815260200190565b60405180910390a25050565b6005546001600160a01b03163314610bea576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b038116610c115760405163d92e233d60e01b815260040160405180910390fd5b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216610c895760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526006602052604090205481811015610cc257604051631e9acf1760e31b815260040160405180910390fd5b6001600160a01b038085165f8181526006602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d219086815260200190565b60405180910390a350505050565b6001600160a01b0382165f9081526006602052604090205481811015610d6857604051631e9acf1760e31b815260040160405180910390fd5b6001600160a01b0383165f8181526006602090815260408083208686039055600480548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6008541580610dd4575080155b15610ddc5750565b5f5f5b60085481101561098f576008545f90610dfa9060019061186b565b8214610e495761271061ffff1660088381548110610e1a57610e1a61182c565b5f91825260209091200154610e3a90600160a01b900461ffff168661187e565b610e449190611895565b610e53565b610e53838561186b565b9050610e5f81846118b4565b92505f60088381548110610e7557610e7561182c565b5f9182526020822001546040516001600160a01b039091169184919081818185875af1925050503d805f8114610ec6576040519150601f19603f3d011682016040523d82523d5f602084013e610ecb565b606091505b5050905080610f175760405162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b60448201526064015b60405180910390fd5b5050600101610ddf565b6014811115610f43576040516333adec1360e21b815260040160405180910390fd5b610f4e60085f611420565b5f808267ffffffffffffffff811115610f6957610f696116d9565b604051908082528060200260200182016040528015610f92578160200160208202803683370190505b5090505f8367ffffffffffffffff811115610faf57610faf6116d9565b604051908082528060200260200182016040528015610fd8578160200160208202803683370190505b5090505f5b84811015611227575f868683818110610ff857610ff861182c565b61100e92602060409092020190810191506115ef565b6001600160a01b0316036110355760405163d92e233d60e01b815260040160405180910390fd5b8585828181106110475761104761182c565b905060400201602001602081019061105f91906118c7565b61ffff165f0361108257604051638bff87cf60e01b815260040160405180910390fd5b8585828181106110945761109461182c565b90506040020160200160208101906110ac91906118c7565b6110ba9061ffff16856118b4565b9350600860405180604001604052808888858181106110db576110db61182c565b6110f192602060409092020190810191506115ef565b6001600160a01b031681526020018888858181106111115761111161182c565b905060400201602001602081019061112991906118c7565b61ffff90811690915282546001810184555f9384526020938490208351910180549490930151909116600160a01b026001600160b01b03199093166001600160a01b03909116179190911790558585828181106111885761118861182c565b61119e92602060409092020190810191506115ef565b8382815181106111b0576111b061182c565b60200260200101906001600160a01b031690816001600160a01b0316815250508585828181106111e2576111e261182c565b90506040020160200160208101906111fa91906118c7565b82828151811061120c5761120c61182c565b61ffff90921660209283029190910190910152600101610fdd565b50831580159061123957506127108314155b1561125757604051638bff87cf60e01b815260040160405180910390fd5b7fd07cc7c1e09e9b6d51353256e2187d7d47126dab27451a953524f22f85d8c84882826040516112889291906118e8565b60405180910390a15050505050565b60085415806112a4575080155b156112ad575050565b5f5f5b60085481101561141a576008545f906112cb9060019061186b565b821461131a5761271061ffff16600883815481106112eb576112eb61182c565b5f9182526020909120015461130b90600160a01b900461ffff168661187e565b6113159190611895565b611324565b611324838561186b565b905061133081846118b4565b9250846001600160a01b031663a9059cbb600884815481106113545761135461182c565b5f9182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af11580156113a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113cd9190611975565b6114115760405162461bcd60e51b8152602060048201526015602482015274115490cc8c17d514905394d1915497d19052531151605a1b6044820152606401610f0e565b506001016112b0565b50505050565b5080545f8255905f5260205f2090611438919061143a565b565b5f5b8082111561098f5780830180546001600160b01b031916905560010161143c565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f602083850312156114a3575f5ffd5b823567ffffffffffffffff8111156114b9575f5ffd5b8301601f810185136114c9575f5ffd5b803567ffffffffffffffff8111156114df575f5ffd5b8560208284010111156114f0575f5ffd5b6020919091019590945092505050565b80356001600160a01b0381168114611516575f5ffd5b919050565b5f5f6040838503121561152c575f5ffd5b61153583611500565b946020939093013593505050565b602080825282518282018190525f918401906040840190835b8181101561159357835180516001600160a01b0316845260209081015161ffff16818501529093019260409092019160010161155c565b509095945050505050565b5f5f5f606084860312156115b0575f5ffd5b6115b984611500565b92506115c760208501611500565b929592945050506040919091013590565b5f602082840312156115e8575f5ffd5b5035919050565b5f602082840312156115ff575f5ffd5b61160882611500565b9392505050565b5f5f60208385031215611620575f5ffd5b823567ffffffffffffffff811115611636575f5ffd5b8301601f81018513611646575f5ffd5b803567ffffffffffffffff81111561165c575f5ffd5b8560208260061b84010111156114f0575f5ffd5b5f5f60408385031215611681575f5ffd5b61168a83611500565b915061169860208401611500565b90509250929050565b600181811c908216806116b557607f821691505b6020821081036116d357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b601f82111561098f578282111561098f57805f5260205f20601f840160051c602085101561171857505f5b90810190601f840160051c035f5b8181101561173b575f83820155600101611726565b505050505050565b67ffffffffffffffff83111561175b5761175b6116d9565b61176f8361176983546116a1565b836116ed565b5f601f8411600181146117a0575f85156117895750838201355b5f19600387901b1c1916600186901b1783556117f7565b5f83815260208120601f198716915b828110156117cf57868501358255602094850194600190920191016117af565b50868210156117eb575f1960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611850575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106a0576106a0611857565b80820281158282048414176106a0576106a0611857565b5f826118af57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156106a0576106a0611857565b5f602082840312156118d7575f5ffd5b813561ffff81168114611608575f5ffd5b604080825283519082018190525f9060208501906060840190835b8181101561192a5783516001600160a01b0316835260209384019390920191600101611903565b5050838103602080860191909152855180835291810192508501905f5b8181101561196957825161ffff16845260209384019390920191600101611947565b50919695505050505050565b5f60208284031215611985575f5ffd5b81518015158114611608575f5ffdfea26469706673582212209ea70c3f781b433109d444feb94f9a74d8378fc46498396b26e017cb82db80c664736f6c63430008220033a26469706673582212206962fd7cb32a8c7db823d4e071d8aae8a19d60fd4ca69d4d7ba62e051a2afe9e64736f6c63430008220033000000000000000000000000167661bc9df5bd845b4fd3710d9ee5b1b7c4fc3b
0x60806040526004361061013f575f3560e01c80637e850e86116100b3578063d07321cb1161006d578063d07321cb14610184578063d5733855146103db578063e4bb1a0c146103fd578063e9a037df1461042f578063f3eb61e414610444578063f7c908cb14610389575f5ffd5b80637e850e861461031c5780639eea4a3a1461033e578063a36f510914610365578063a9a1e25214610389578063b0e6749a146103a0578063c488aedc146103b4575f5ffd5b80633d715c56116101045780633d715c561461022f5780633db90e2f146102455780634bc1bf14146102665780634e0666491461028f57806354811e96146102c2578063791b98bc146102e9575f5ffd5b806306abd66d1461014a5780630dcb9c881461018457806312261ee7146101ad57806315b749f7146101e0578063192a0bcb146101f7575f5ffd5b3661014657005b5f5ffd5b348015610155575f5ffd5b5061016769a6af776004abf4e612ad81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561018f575f5ffd5b5061019a6203840081565b60405160029190910b815260200161017b565b3480156101b8575f5ffd5b506101677f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba381565b3480156101eb575f5ffd5b5061019a6201d4bf1981565b348015610202575f5ffd5b506102176c01431e0fae6d7217caa000000081565b6040516001600160801b03909116815260200161017b565b34801561023a575f5ffd5b5061019a6201d4c081565b348015610250575f5ffd5b5061026461025f366004611853565b6104c9565b005b348015610271575f5ffd5b5061027b61271081565b60405162ffffff909116815260200161017b565b34801561029a575f5ffd5b506101677f000000000000000000000000167661bc9df5bd845b4fd3710d9ee5b1b7c4fc3b81565b3480156102cd575f5ffd5b50610167730bd7d308f8e1639fab988df18a8011f41eacad7381565b3480156102f4575f5ffd5b506101677f00000000000000000000000058daec3116aae6d93017baaea7749052e8a04fa781565b348015610327575f5ffd5b506101676e22d473030f116ddee9f6b43ac78ba381565b348015610349575f5ffd5b50610352606481565b60405161ffff909116815260200161017b565b348015610370575f5ffd5b5061037b620186a081565b60405190815260200161017b565b348015610394575f5ffd5b5061019a620383ff1981565b3480156103ab575f5ffd5b5061019a60c881565b3480156103bf575f5ffd5b506101677358daec3116aae6d93017baaea7749052e8a04fa781565b3480156103e6575f5ffd5b506101676e01892bf93719f13782793d830c6bcc81565b61041061040b36600461187d565b610867565b604080516001600160a01b03909316835260208301919091520161017b565b34801561043a575f5ffd5b5061037b60015481565b34801561044f575f5ffd5b5061049761045e36600461191c565b5f6020819052908152604090208054600182015460029092015490916001600160a01b039081169190811690600160a01b900460ff1684565b60405161017b94939291909384526001600160a01b039283166020850152911660408301521515606082015260800190565b60025460ff16156104ed576040516306fda65d60e31b815260040160405180910390fd5b6002805460ff1916600190811782556001600160a01b038085165f9081526020818152604091829020825160808101845281548152948101548416918501919091529093015490811692820192909252600160a01b90910460ff1615156060820181905261056e57604051631c9bf36f60e11b815260040160405180910390fd5b5f839050806001600160a01b031663300fca826040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d29190611937565b5f036105f1576040516317799fe560e01b815260040160405180910390fd5b5f6105ff8360200151610f4f565b90505f61060f8460400151610f4f565b60408051600160f81b6020820152601160f81b602182015281516002818303810182526022830181815260828401909452939450925f92916042015b606081526020019060019003908161064b575050865160408051602080820183525f80835292519495506106859483928392909101611990565b604051602081830303815290604052815f815181106106a6576106a66119d7565b602002602001018190525085602001518660400151306040516020016106ec939291906001600160a01b0393841681529183166020830152909116604082015260600190565b6040516020818303038152906040528160018151811061070e5761070e6119d7565b60200260200101819052507f00000000000000000000000058daec3116aae6d93017baaea7749052e8a04fa76001600160a01b031663dd46508f838360405160200161075b9291906119eb565b604051602081830303815290604052896040518363ffffffff1660e01b8152600401610788929190611a60565b5f604051808303815f87803b15801561079f575f5ffd5b505af11580156107b1573d5f5f3e3d5ffd5b505050505f846107c48860200151610f4f565b6107ce9190611a95565b90505f846107df8960400151610f4f565b6107e99190611a95565b90506107fa87896020015184610fd4565b61080987896040015183610fd4565b8751604080518481526020810184905233916001600160a01b038e16917ff9539e7d3da3ea7c4c0b215717a413284630541852e9f2875f6d7882f35ef85e910160405180910390a450506002805460ff191690555050505050505050565b5f803415610887576040516248c6b960e61b815260040160405180910390fd5b5f61089860a087016080880161191c565b6001600160a01b0316036108bf5760405163d92e233d60e01b815260040160405180910390fd5b5f8367ffffffffffffffff8111156108d9576108d961194e565b60405190808252806020026020018201604052801561091d57816020015b604080518082019091525f80825260208201528152602001906001900390816108f75790505b5090505f5b848110156109775785858281811061093c5761093c6119d7565b9050604002018036038101906109529190611ab7565b828281518110610964576109646119d7565b6020908102919091010152600101610922565b50610982868261122d565b92505f61098e84611410565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3811660048301525f1960248301529192509085169063095ea7b3906044016020604051808303815f875af11580156109fe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a229190611b22565b506040516387517c4560e01b81526001600160a01b0385811660048301527f00000000000000000000000058daec3116aae6d93017baaea7749052e8a04fa7811660248301526044820181905265ffffffffffff60648301527f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316906387517c45906084015f604051808303815f87803b158015610abe575f5ffd5b505af1158015610ad0573d5f5f3e3d5ffd5b50508251602084015160405163f702040560e01b81526001600160a01b037f00000000000000000000000058daec3116aae6d93017baaea7749052e8a04fa716945063f70204059350610b27929190600401611b84565b6020604051808303815f875af1158015610b43573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b679190611baa565b507f00000000000000000000000058daec3116aae6d93017baaea7749052e8a04fa76001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bc4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610be89190611937565b60408051600160f91b6020820152600d60f81b602182015281516002818303810182526022830181815260828401909452939650925f92916042015b6060815260200190600190039081610c24579050509050825f0151836040015184606001518560c0015186608001518760a001513060405180602001604052805f815250604051602001610c7f989796959493929190611bca565b604051602081830303815290604052815f81518110610ca057610ca06119d7565b6020908102919091018101919091528351805190820151604051610cd993016001600160a01b0392831681529116602082015260400190565b60405160208183030381529060405281600181518110610cfb57610cfb6119d7565b60200260200101819052507f00000000000000000000000058daec3116aae6d93017baaea7749052e8a04fa76001600160a01b031663dd46508f8383604051602001610d489291906119eb565b604051602081830303815290604052426040518363ffffffff1660e01b8152600401610d75929190611a60565b5f604051808303815f87803b158015610d8c575f5ffd5b505af1158015610d9e573d5f5f3e3d5ffd5b5050604080516080810182528881528651516001600160a01b039081166020808401918252895181015183168486019081526001606086018181528f86165f8181529485905288852097518855945191870180546001600160a01b031916928716929092179091559051600290950180549151959094166001600160a81b031990911617600160a01b941515949094029390931790915591516370a0823160e01b81523060048201529093509091506370a0823190602401602060405180830381865afa158015610e71573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e959190611937565b9050620186a0811115610ec35760405163c97a89ef60e01b8152600481018290526024015b60405180910390fd5b85610ed460a08c0160808d0161191c565b6001600160a01b0316886001600160a01b03167f5cc3c6d18d5d3de9c7479fbab19ba7c75f24d34bb1d1bb3a3e892c5f89af58c3875f0151886040015189606001516c01431e0fae6d7217caa00000008b60c00151604051610f3a959493929190611c41565b60405180910390a45050505050935093915050565b5f816001600160a01b03811615610fcb576040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa158015610fa2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc69190611937565b610fcd565b475b9392505050565b805f03610fe057505050565b5f836001600160a01b031663300fca826040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110419190611937565b9050805f03611063576040516317799fe560e01b815260040160405180910390fd5b825f612710611073606486611c82565b61107d9190611c99565b90505f61108a8286611a95565b90508115611135576110bd837f000000000000000000000000167661bc9df5bd845b4fd3710d9ee5b1b7c4fc3b8461154e565b826001600160a01b03167f000000000000000000000000167661bc9df5bd845b4fd3710d9ee5b1b7c4fc3b6001600160a01b0316886001600160a01b03167f4943e83293918107ba823ef7558c70a81f5cdc5189d4c41eb7e240576f42fe598560405161112c91815260200190565b60405180910390a45b805f036111455750505050505050565b5f5f5b85811015611222576040516353d8489160e11b8152600481018290525f9081906001600160a01b038c169063a7b09122906024016040805180830381865afa158015611196573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ba9190611cb8565b90925090505f6111cb60018a611a95565b84146111f1576127106111e261ffff841688611c82565b6111ec9190611c99565b6111fb565b6111fb8587611a95565b90506112078186611cf0565b945061121488848361154e565b505050806001019050611148565b505050505050505050565b5f5f6040518060200161123f9061182f565b601f1982820381018352601f9091011660405261125c8580611d03565b6112696020880188611d03565b61127660408a018a611d03565b61128360608c018c611d03565b61129360a08e0160808f0161191c565b308d6040516020016112af9b9a99989796959493929190611d75565b60408051601f19818403018152908290526112cd9291602001611e59565b6040516020818303038152906040528051906020012090505f60015f8154809291906112f890611e75565b9190505590505f61130983836116b0565b9050806113168780611d03565b61132360208a018a611d03565b61133060408c018c611d03565b61133d60608e018e611d03565b8e6080016020810190611350919061191c565b308f60405161135e9061182f565b6113729b9a99989796959493929190611d75565b8190604051809103905ff590508015801561138f573d5f5f3e3d5ffd5b509350730bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b038516106113cf5760405163769aca5560e01b815260040160405180910390fd5b8181856001600160a01b03167f9799c845bbfc5322d25d497a00acc393b1110925af87141dc835293f3386ecab60405160405180910390a450505092915050565b60408051610180810182525f60e082018181526101008301829052610120830182905261014083018290526101608301829052825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152730bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b038316106114ac5760405163769aca5560e01b815260040160405180910390fd5b69a6af776004abf4e612ad60208201819052620383ff1960408301526201d4bf1960608301526c01431e0fae6d7217caa0000000608083018190526114fe91906aa27f09a5ceadaf553b3ca6906117cb565b60c08201526040805160a0810182526001600160a01b039093168352730bd7d308f8e1639fab988df18a8011f41eacad7360208401526127109083015260c860608301525f608083015290815290565b6001600160a01b0383166115f7575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146115a5576040519150601f19603f3d011682016040523d82523d5f602084013e6115aa565b606091505b50509050806115f15760405162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b6044820152606401610eba565b50505050565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af1158015611643573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116679190611b22565b6116ab5760405162461bcd60e51b8152602060048201526015602482015274115490cc8c17d514905394d1915497d19052531151605a1b6044820152606401610eba565b505050565b60408051466020820152339181019190915260608101829052608081018390525f90819060a0016040516020818303038152906040528051906020012090505f5b6102008110156117ab57604080516020808201859052818301849052825180830384018152606080840185528151918301919091206001600160f81b031960808501523090911b6bffffffffffffffffffffffff191660818401526095830181905260b58084018a90528451808503909101815260d59093019093528151910120909350730bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b03821610156117a2575050506117c5565b506001016116f1565b5060405163769aca5560e01b815260040160405180910390fd5b92915050565b5f80600160601b6117e56001600160a01b03871685611c82565b6117ef9190611c99565b90505f6118086001600160a01b03808816908716611a95565b61181b6001600160a01b03871684611c82565b6118259190611c99565b9695505050505050565b61243e80611e8e83390190565b6001600160a01b0381168114611850575f5ffd5b50565b5f5f60408385031215611864575f5ffd5b823561186f8161183c565b946020939093013593505050565b5f5f5f6040848603121561188f575f5ffd5b833567ffffffffffffffff8111156118a5575f5ffd5b840160a081870312156118b6575f5ffd5b9250602084013567ffffffffffffffff8111156118d1575f5ffd5b8401601f810186136118e1575f5ffd5b803567ffffffffffffffff8111156118f7575f5ffd5b8660208260061b840101111561190b575f5ffd5b939660209190910195509293505050565b5f6020828403121561192c575f5ffd5b8135610fcd8161183c565b5f60208284031215611947575f5ffd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b8581528460208201526001600160801b03841660408201526001600160801b038316606082015260a060808201525f6119cc60a0830184611962565b979650505050505050565b634e487b7160e01b5f52603260045260245ffd5b604081525f6119fd6040830185611962565b828103602084015280845180835260208301915060208160051b840101602087015f5b83811015611a5257601f19868403018552611a3c838351611962565b6020958601959093509190910190600101611a20565b509098975050505050505050565b604081525f611a726040830185611962565b90508260208301529392505050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156117c5576117c5611a81565b61ffff81168114611850575f5ffd5b5f6040828403128015611ac8575f5ffd5b506040805190810167ffffffffffffffff81118282101715611af857634e487b7160e01b5f52604160045260245ffd5b6040528235611b068161183c565b81526020830135611b1681611aa8565b60208201529392505050565b5f60208284031215611b32575f5ffd5b81518015158114610fcd575f5ffd5b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b60c08101611b928285611b41565b6001600160a01b039290921660a09190910152919050565b5f60208284031215611bba575f5ffd5b81518060020b8114610fcd575f5ffd5b611bd4818a611b41565b8760020b60a08201528660020b60c08201528560e08201526001600160801b0385166101008201526001600160801b03841661012082015260018060a01b0383166101408201526101806101608201525f611c33610180830184611962565b9a9950505050505050505050565b6101208101611c508288611b41565b8560020b60a08301528460020b60c08301526001600160801b03841660e0830152826101008301529695505050505050565b80820281158282048414176117c5576117c5611a81565b5f82611cb357634e487b7160e01b5f52601260045260245ffd5b500490565b5f5f60408385031215611cc9575f5ffd5b8251611cd48161183c565b6020840151909250611ce581611aa8565b809150509250929050565b808201808211156117c5576117c5611a81565b5f5f8335601e19843603018112611d18575f5ffd5b83018035915067ffffffffffffffff821115611d32575f5ffd5b602001915036819003821315611d46575f5ffd5b9250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60e081525f611d8860e083018d8f611d4d565b8281036020840152611d9b818c8e611d4d565b90508281036040840152611db0818a8c611d4d565b90508281036060840152611dc581888a611d4d565b6001600160a01b038781166080860152861660a085015283810360c0850152845180825260208087019350909101905f5b81811015611e2d57835180516001600160a01b0316845260209081015161ffff168185015290930192604090920191600101611df6565b50909f9e505050505050505050505050505050565b5f81518060208401855e5f93019283525090919050565b5f611e6d611e678386611e42565b84611e42565b949350505050565b5f60018201611e8657611e86611a81565b506001019056fe608060405234801561000f575f5ffd5b5060405161243e38038061243e83398101604081905261002e9161071b565b6001600160a01b038316158061004b57506001600160a01b038216155b156100695760405163d92e233d60e01b815260040160405180910390fd5b5f61007488826108ae565b50600161008187826108ae565b50600261008e86826108ae565b50600361009b85826108ae565b50600580546001600160a01b0319166001600160a01b0385161790556100ce826c01431e0fae6d7217caa0000000610186565b6100d781610233565b6040516001600160a01b038416905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a37f9b9cd1b6d10196260eb379c94feef6204d1e0244b38efe9d31be6ad4055f22ea8560405161013b919061096c565b60405180910390a17fefafb90526da1636e1335eac0151301742fb755d986954c613b90e891778ba3984604051610172919061096c565b60405180910390a150505050505050610a67565b6001600160a01b0382166101ad5760405163d92e233d60e01b815260040160405180910390fd5b8060045f8282546101be91906109a1565b90915550506001600160a01b0382165f90815260066020526040812080548392906101ea9084906109a1565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b601481511115610256576040516333adec1360e21b815260040160405180910390fd5b61026160085f610529565b5f5f82516001600160401b0381111561027c5761027c61056b565b6040519080825280602002602001820160405280156102a5578160200160208202803683370190505b5090505f83516001600160401b038111156102c2576102c261056b565b6040519080825280602002602001820160405280156102eb578160200160208202803683370190505b5090505f5b84518110156104b9575f6001600160a01b0316858281518110610315576103156109c6565b60200260200101515f01516001600160a01b0316036103475760405163d92e233d60e01b815260040160405180910390fd5b848181518110610359576103596109c6565b60200260200101516020015161ffff165f0361038857604051638bff87cf60e01b815260040160405180910390fd5b84818151811061039a5761039a6109c6565b60200260200101516020015161ffff16846103b591906109a1565b935060088582815181106103cb576103cb6109c6565b60209081029190910181015182546001810184555f93845292829020815193018054919092015161ffff16600160a01b026001600160b01b03199091166001600160a01b03909316929092179190911790558451859082908110610431576104316109c6565b60200260200101515f015183828151811061044e5761044e6109c6565b60200260200101906001600160a01b031690816001600160a01b031681525050848181518110610480576104806109c6565b60200260200101516020015182828151811061049e5761049e6109c6565b61ffff909216602092830291909101909101526001016102f0565b508351158015906104cc57506127108314155b156104ea57604051638bff87cf60e01b815260040160405180910390fd5b7fd07cc7c1e09e9b6d51353256e2187d7d47126dab27451a953524f22f85d8c848828260405161051b9291906109da565b60405180910390a150505050565b5080545f8255905f5260205f20906105419190610543565b565b5f5b808211156105665780830180546001600160b01b0319169055600101610545565b505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156105a1576105a161056b565b60405290565b604051601f8201601f191681016001600160401b03811182821017156105cf576105cf61056b565b604052919050565b5f82601f8301126105e6575f5ffd5b81516001600160401b038111156105ff576105ff61056b565b610612601f8201601f19166020016105a7565b818152846020838601011115610626575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b0381168114610658575f5ffd5b919050565b5f82601f83011261066c575f5ffd5b81516001600160401b038111156106855761068561056b565b61069460208260051b016105a7565b8082825260208201915060208360061b8601019250858311156106b5575f5ffd5b602085015b8381101561071157604081880312156106d1575f5ffd5b6106d961057f565b6106e282610642565b8152602082015161ffff811681146106f8575f5ffd5b60208281019190915290845292909201916040016106ba565b5095945050505050565b5f5f5f5f5f5f5f60e0888a031215610731575f5ffd5b87516001600160401b03811115610746575f5ffd5b6107528a828b016105d7565b60208a015190985090506001600160401b0381111561076f575f5ffd5b61077b8a828b016105d7565b60408a015190975090506001600160401b03811115610798575f5ffd5b6107a48a828b016105d7565b60608a015190965090506001600160401b038111156107c1575f5ffd5b6107cd8a828b016105d7565b9450506107dc60808901610642565b92506107ea60a08901610642565b60c08901519092506001600160401b03811115610805575f5ffd5b6108118a828b0161065d565b91505092959891949750929550565b600181811c9082168061083457607f821691505b60208210810361085257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610566578282111561056657805f5260205f20601f840160051c602085101561088357505f5b90810190601f840160051c035f5b818110156108a6575f83820155600101610891565b505050505050565b81516001600160401b038111156108c7576108c761056b565b6108db816108d58454610820565b84610858565b6020601f82116001811461090d575f83156108f65750848201515b5f19600385901b1c1916600184901b178455610965565b5f84815260208120601f198516915b8281101561093c578785015182556020948501946001909201910161091c565b508482101561095957868401515f19600387901b60f8161c191681555b505060018360011b0184555b5050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b808201808211156109c057634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52603260045260245ffd5b604080825283519082018190525f9060208501906060840190835b81811015610a1c5783516001600160a01b03168352602093840193909201916001016109f5565b5050838103602080860191909152855180835291810192508501905f5b81811015610a5b57825161ffff16845260209384019390920191600101610a39565b50919695505050505050565b6119ca80610a745f395ff3fe608060405260043610610198575f3560e01c8063750521f5116100e7578063b8b9b54911610087578063cfd94ac911610062578063cfd94ac91461049b578063dd62ed3e146104af578063e1a45218146104e5578063f2fde38b1461050d575f5ffd5b8063b8b9b54914610449578063ba89dfab1461045d578063bce582691461047c575f5ffd5b8063902d55a5116100c2578063902d55a5146103b557806395d89b41146103d5578063a7b09122146103e9578063a9059cbb1461042a575f5ffd5b8063750521f51461034057806379cc67901461035f5780638da5cb5b1461037e575f5ffd5b806318160ddd11610152578063313ce5671161012d578063313ce567146102bc57806342966c68146102e257806370a0823114610301578063715018a61461032c575f5ffd5b806318160ddd1461026657806323b872dd14610289578063300fca82146102a8575f5ffd5b806303ee438c146101a357806304787ca2146101cd57806306fdde03146101ee578063095ea7b3146102025780630adfdcb914610231578063135d088d14610252575f5ffd5b3661019f57005b5f5ffd5b3480156101ae575f5ffd5b506101b761052c565b6040516101c4919061145d565b60405180910390f35b3480156101d8575f5ffd5b506101ec6101e7366004611492565b6105b8565b005b3480156101f9575f5ffd5b506101b761062e565b34801561020d575f5ffd5b5061022161021c36600461151b565b61063a565b60405190151581526020016101c4565b34801561023c575f5ffd5b506102456106a6565b6040516101c49190611543565b34801561025d575f5ffd5b506101b761071b565b348015610271575f5ffd5b5061027b60045481565b6040519081526020016101c4565b348015610294575f5ffd5b506102216102a336600461159e565b610728565b3480156102b3575f5ffd5b5060085461027b565b3480156102c7575f5ffd5b506102d0601281565b60405160ff90911681526020016101c4565b3480156102ed575f5ffd5b506101ec6102fc3660046115d8565b6107ea565b34801561030c575f5ffd5b5061027b61031b3660046115ef565b60066020525f908152604090205481565b348015610337575f5ffd5b506101ec6107f7565b34801561034b575f5ffd5b506101ec61035a366004611492565b61086f565b34801561036a575f5ffd5b506101ec61037936600461151b565b6108d9565b348015610389575f5ffd5b5060055461039d906001600160a01b031681565b6040516001600160a01b0390911681526020016101c4565b3480156103c0575f5ffd5b5061027b6c01431e0fae6d7217caa000000081565b3480156103e0575f5ffd5b506101b7610994565b3480156103f4575f5ffd5b506104086104033660046115d8565b6109a1565b604080516001600160a01b03909316835261ffff9091166020830152016101c4565b348015610435575f5ffd5b5061022161044436600461151b565b6109f9565b348015610454575f5ffd5b506101ec610a0e565b348015610468575f5ffd5b506101ec61047736600461160f565b610a79565b348015610487575f5ffd5b506101ec6104963660046115ef565b610ab2565b3480156104a6575f5ffd5b5061027b601481565b3480156104ba575f5ffd5b5061027b6104c9366004611670565b600760209081525f928352604080842090915290825290205481565b3480156104f0575f5ffd5b506104fa61271081565b60405161ffff90911681526020016101c4565b348015610518575f5ffd5b506101ec6105273660046115ef565b610bbf565b60038054610539906116a1565b80601f0160208091040260200160405190810160405280929190818152602001828054610565906116a1565b80156105b05780601f10610587576101008083540402835291602001916105b0565b820191905f5260205f20905b81548152906001019060200180831161059357829003601f168201915b505050505081565b6005546001600160a01b031633146105e3576040516330cd747160e01b815260040160405180910390fd5b60026105f0828483611743565b507f9b9cd1b6d10196260eb379c94feef6204d1e0244b38efe9d31be6ad4055f22ea82826040516106229291906117fe565b60405180910390a15050565b5f8054610539906116a1565b335f8181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106949086815260200190565b60405180910390a35060015b92915050565b60606008805480602002602001604051908101604052809291908181526020015f905b82821015610712575f84815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900461ffff16818301528252600190920191016106c9565b50505050905090565b60028054610539906116a1565b6001600160a01b0383165f9081526007602090815260408083203384529091528120545f1981146107d45782811015610774576040516313be252b60e01b815260040160405180910390fd5b6001600160a01b0385165f81815260076020908152604080832033808552908352928190208786039081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b6107df858585610c62565b506001949350505050565b6107f43382610d2f565b50565b6005546001600160a01b03163314610822576040516330cd747160e01b815260040160405180910390fd5b600580546001600160a01b031981169091556040516001600160a01b03909116905f9082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6005546001600160a01b0316331461089a576040516330cd747160e01b815260040160405180910390fd5b60036108a7828483611743565b507fefafb90526da1636e1335eac0151301742fb755d986954c613b90e891778ba3982826040516106229291906117fe565b6001600160a01b0382165f9081526007602090815260408083203384529091529020545f1981146109855781811015610925576040516313be252b60e01b815260040160405180910390fd5b6001600160a01b0383165f81815260076020908152604080832033808552908352928190208686039081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b61098f8383610d2f565b505050565b60018054610539906116a1565b5f5f5f600884815481106109b7576109b761182c565b5f918252602091829020604080518082019091529101546001600160a01b038116808352600160a01b90910461ffff1691909201819052909590945092505050565b5f610a05338484610c62565b50600192915050565b6005546001600160a01b03163314610a39576040516330cd747160e01b815260040160405180910390fd5b47610a4381610dc7565b6040518181527f0f73c15fc09bc757caafe571e052b89857e226540f25c1843b6f48923e88684a9060200160405180910390a150565b6005546001600160a01b03163314610aa4576040516330cd747160e01b815260040160405180910390fd5b610aae8282610f21565b5050565b6005546001600160a01b03163314610add576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b038116610b045760405163d92e233d60e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610b48573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6c9190611840565b9050610b788282611297565b816001600160a01b03167f4e1e88cf5ade6eb9bfc4458c50e0b120968403b23b01de2106d080851f630a5982604051610bb391815260200190565b60405180910390a25050565b6005546001600160a01b03163314610bea576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b038116610c115760405163d92e233d60e01b815260040160405180910390fd5b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216610c895760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526006602052604090205481811015610cc257604051631e9acf1760e31b815260040160405180910390fd5b6001600160a01b038085165f8181526006602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d219086815260200190565b60405180910390a350505050565b6001600160a01b0382165f9081526006602052604090205481811015610d6857604051631e9acf1760e31b815260040160405180910390fd5b6001600160a01b0383165f8181526006602090815260408083208686039055600480548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6008541580610dd4575080155b15610ddc5750565b5f5f5b60085481101561098f576008545f90610dfa9060019061186b565b8214610e495761271061ffff1660088381548110610e1a57610e1a61182c565b5f91825260209091200154610e3a90600160a01b900461ffff168661187e565b610e449190611895565b610e53565b610e53838561186b565b9050610e5f81846118b4565b92505f60088381548110610e7557610e7561182c565b5f9182526020822001546040516001600160a01b039091169184919081818185875af1925050503d805f8114610ec6576040519150601f19603f3d011682016040523d82523d5f602084013e610ecb565b606091505b5050905080610f175760405162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b60448201526064015b60405180910390fd5b5050600101610ddf565b6014811115610f43576040516333adec1360e21b815260040160405180910390fd5b610f4e60085f611420565b5f808267ffffffffffffffff811115610f6957610f696116d9565b604051908082528060200260200182016040528015610f92578160200160208202803683370190505b5090505f8367ffffffffffffffff811115610faf57610faf6116d9565b604051908082528060200260200182016040528015610fd8578160200160208202803683370190505b5090505f5b84811015611227575f868683818110610ff857610ff861182c565b61100e92602060409092020190810191506115ef565b6001600160a01b0316036110355760405163d92e233d60e01b815260040160405180910390fd5b8585828181106110475761104761182c565b905060400201602001602081019061105f91906118c7565b61ffff165f0361108257604051638bff87cf60e01b815260040160405180910390fd5b8585828181106110945761109461182c565b90506040020160200160208101906110ac91906118c7565b6110ba9061ffff16856118b4565b9350600860405180604001604052808888858181106110db576110db61182c565b6110f192602060409092020190810191506115ef565b6001600160a01b031681526020018888858181106111115761111161182c565b905060400201602001602081019061112991906118c7565b61ffff90811690915282546001810184555f9384526020938490208351910180549490930151909116600160a01b026001600160b01b03199093166001600160a01b03909116179190911790558585828181106111885761118861182c565b61119e92602060409092020190810191506115ef565b8382815181106111b0576111b061182c565b60200260200101906001600160a01b031690816001600160a01b0316815250508585828181106111e2576111e261182c565b90506040020160200160208101906111fa91906118c7565b82828151811061120c5761120c61182c565b61ffff90921660209283029190910190910152600101610fdd565b50831580159061123957506127108314155b1561125757604051638bff87cf60e01b815260040160405180910390fd5b7fd07cc7c1e09e9b6d51353256e2187d7d47126dab27451a953524f22f85d8c84882826040516112889291906118e8565b60405180910390a15050505050565b60085415806112a4575080155b156112ad575050565b5f5f5b60085481101561141a576008545f906112cb9060019061186b565b821461131a5761271061ffff16600883815481106112eb576112eb61182c565b5f9182526020909120015461130b90600160a01b900461ffff168661187e565b6113159190611895565b611324565b611324838561186b565b905061133081846118b4565b9250846001600160a01b031663a9059cbb600884815481106113545761135461182c565b5f9182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af11580156113a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113cd9190611975565b6114115760405162461bcd60e51b8152602060048201526015602482015274115490cc8c17d514905394d1915497d19052531151605a1b6044820152606401610f0e565b506001016112b0565b50505050565b5080545f8255905f5260205f2090611438919061143a565b565b5f5b8082111561098f5780830180546001600160b01b031916905560010161143c565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f602083850312156114a3575f5ffd5b823567ffffffffffffffff8111156114b9575f5ffd5b8301601f810185136114c9575f5ffd5b803567ffffffffffffffff8111156114df575f5ffd5b8560208284010111156114f0575f5ffd5b6020919091019590945092505050565b80356001600160a01b0381168114611516575f5ffd5b919050565b5f5f6040838503121561152c575f5ffd5b61153583611500565b946020939093013593505050565b602080825282518282018190525f918401906040840190835b8181101561159357835180516001600160a01b0316845260209081015161ffff16818501529093019260409092019160010161155c565b509095945050505050565b5f5f5f606084860312156115b0575f5ffd5b6115b984611500565b92506115c760208501611500565b929592945050506040919091013590565b5f602082840312156115e8575f5ffd5b5035919050565b5f602082840312156115ff575f5ffd5b61160882611500565b9392505050565b5f5f60208385031215611620575f5ffd5b823567ffffffffffffffff811115611636575f5ffd5b8301601f81018513611646575f5ffd5b803567ffffffffffffffff81111561165c575f5ffd5b8560208260061b84010111156114f0575f5ffd5b5f5f60408385031215611681575f5ffd5b61168a83611500565b915061169860208401611500565b90509250929050565b600181811c908216806116b557607f821691505b6020821081036116d357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b601f82111561098f578282111561098f57805f5260205f20601f840160051c602085101561171857505f5b90810190601f840160051c035f5b8181101561173b575f83820155600101611726565b505050505050565b67ffffffffffffffff83111561175b5761175b6116d9565b61176f8361176983546116a1565b836116ed565b5f601f8411600181146117a0575f85156117895750838201355b5f19600387901b1c1916600186901b1783556117f7565b5f83815260208120601f198716915b828110156117cf57868501358255602094850194600190920191016117af565b50868210156117eb575f1960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611850575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106a0576106a0611857565b80820281158282048414176106a0576106a0611857565b5f826118af57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156106a0576106a0611857565b5f602082840312156118d7575f5ffd5b813561ffff81168114611608575f5ffd5b604080825283519082018190525f9060208501906060840190835b8181101561192a5783516001600160a01b0316835260209384019390920191600101611903565b5050838103602080860191909152855180835291810192508501905f5b8181101561196957825161ffff16845260209384019390920191600101611947565b50919695505050505050565b5f60208284031215611985575f5ffd5b81518015158114611608575f5ffdfea26469706673582212209ea70c3f781b433109d444feb94f9a74d8378fc46498396b26e017cb82db80c664736f6c63430008220033a26469706673582212206962fd7cb32a8c7db823d4e071d8aae8a19d60fd4ca69d4d7ba62e051a2afe9e64736f6c63430008220033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| Uniswap v4 Positions NFT (UNI-V4-POSM) | UNI-V4-POSM | 12 | — | — |
| BYENOXA (BYENOXA) | BYENOXA | 0.000000 | — | — |
| Green Vlad (GVLAD) | GVLAD | 0.000000 | — | — |
| YAPDOG (YAPDOG) | YAPDOG | 0.000000 | — | — |
| Green Vlad ($GVLAD) | $GVLAD | 0.000000 | — | — |
| DOG (DOG) | DOG | 0.000000 | — | — |
| NFT (NFT) | NFT | 0.000000 | — | — |
| qianbaidu (qianbaidu) | qianbaidu | 0.000000 | — | — |
| GILL (GILL) | GILL | 0.000000 | — | — |
| molt bank (molt bank) | molt bank | 0.000000 | — | — |
| right (right) | right | 0.000000 | — | — |
| BYEJESSE (BYEJESSE) | BYEJESSE | 0.000000 | — | — |
| achieve today (achieve today) | achieve today | 0.000000 | — | — |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x7d115f…92b42e | 26 days agoWed, 22 Jul 2026 04:44:52 UTC | 0x5cc3c6…58c3 | [0] 0x000000000000…bc086b5b [1] 0x000000000000…bf8fae20 [2] 0x000000000000…0004159a data: 0x000000000000000000…e383bbda |
| 0x7d115f…92b42e | 26 days agoWed, 22 Jul 2026 04:44:52 UTC | 0x9799c8…ecab | [0] 0x000000000000…bc086b5b [1] 0x0dcac496b1fa…44a14c3a [2] 0x000000000000…0000000b |
| 0x2a1690…02a848 | 29 days agoSun, 19 Jul 2026 10:28:03 UTC | 0x5cc3c6…58c3 | [0] 0x000000000000…ea5ca9e3 [1] 0x000000000000…b7c4fc3b [2] 0x000000000000…0002f93e data: 0x000000000000000000…e383bbda |
| 0x2a1690…02a848 | 29 days agoSun, 19 Jul 2026 10:28:03 UTC | 0x9799c8…ecab | [0] 0x000000000000…ea5ca9e3 [1] 0xd1e05d9b48b8…4c9e4387 [2] 0x000000000000…0000000a |
| 0x377b93…405198 | 31 days agoFri, 17 Jul 2026 13:50:24 UTC | 0x5cc3c6…58c3 | [0] 0x000000000000…63b2b98c [1] 0x000000000000…b7c4fc3b [2] 0x000000000000…00027822 data: 0x000000000000000000…e383bbda |
| 0x377b93…405198 | 31 days agoFri, 17 Jul 2026 13:50:24 UTC | 0x9799c8…ecab | [0] 0x000000000000…63b2b98c [1] 0x875713a3a3cf…126e8c48 [2] 0x000000000000…00000009 |
| 0xc5c9a0…1da1d1 | 31 days agoFri, 17 Jul 2026 13:48:27 UTC | 0x5cc3c6…58c3 | [0] 0x000000000000…82035dab [1] 0x000000000000…b7c4fc3b [2] 0x000000000000…00027807 data: 0x000000000000000000…e383bbda |
| 0xc5c9a0…1da1d1 | 31 days agoFri, 17 Jul 2026 13:48:27 UTC | 0x9799c8…ecab | [0] 0x000000000000…82035dab [1] 0x06163f8f4c25…f70a4db8 [2] 0x000000000000…00000008 |
| 0xcf4a1d…af710d | 33 days agoWed, 15 Jul 2026 18:23:15 UTC | 0x5cc3c6…58c3 | [0] 0x000000000000…90a90ae6 [1] 0x000000000000…b7c4fc3b [2] 0x000000000000…0001e137 data: 0x000000000000000000…e383bbda |
| 0xcf4a1d…af710d | 33 days agoWed, 15 Jul 2026 18:23:15 UTC | 0x9799c8…ecab | [0] 0x000000000000…90a90ae6 [1] 0x5229703f950a…9d28543a [2] 0x000000000000…00000007 |
| 0xe99d7d…b4572c | 34 days agoTue, 14 Jul 2026 15:24:32 UTC | 0x5cc3c6…58c3 | [0] 0x000000000000…dc9b6aee [1] 0x000000000000…b7c4fc3b [2] 0x000000000000…00016d28 data: 0x000000000000000000…e383bbda |
| 0xe99d7d…b4572c | 34 days agoTue, 14 Jul 2026 15:24:32 UTC | 0x9799c8…ecab | [0] 0x000000000000…dc9b6aee [1] 0x478d36da91b7…4634dc25 [2] 0x000000000000…00000006 |
| 0x89b036…169378 | 35 days agoMon, 13 Jul 2026 12:08:08 UTC | 0x5cc3c6…58c3 | [0] 0x000000000000…f1d5e246 [1] 0x000000000000…b7c4fc3b [2] 0x000000000000…000114ad data: 0x000000000000000000…e383bbda |
| 0x89b036…169378 | 35 days agoMon, 13 Jul 2026 12:08:08 UTC | 0x9799c8…ecab | [0] 0x000000000000…f1d5e246 [1] 0x4f103fb9c670…66a60d78 [2] 0x000000000000…00000005 |
| 0xd8f34b…fb72c7 | 35 days agoMon, 13 Jul 2026 09:21:04 UTC | 0xf9539e…f85e | [0] 0x000000000000…4fd3e478 [1] 0x000000000000…9697df99 [2] 0x000000000000…0000d9c0 data: 0x000000000000000000…b2dc3fff |
| 0xd8f34b…fb72c7 | 35 days agoMon, 13 Jul 2026 09:21:04 UTC | 0x4943e8…fe59 | [0] 0x000000000000…4fd3e478 [1] 0x000000000000…b7c4fc3b [2] 0x000000000000…1eacad73 data: 0x000000000000000000…a3118fff |
| 0xd8f34b…fb72c7 | 35 days agoMon, 13 Jul 2026 09:21:04 UTC | 0x4943e8…fe59 | [0] 0x000000000000…4fd3e478 [1] 0x000000000000…b7c4fc3b [2] 0x000000000000…4fd3e478 data: 0x000000000000000000…7cfa8924 |
| 0xa4a983…7b5aab | 35 days agoMon, 13 Jul 2026 08:50:30 UTC | 0x5cc3c6…58c3 | [0] 0x000000000000…cc1f8a75 [1] 0x000000000000…b7c4fc3b [2] 0x000000000000…00010cd2 data: 0x000000000000000000…e383bbda |
| 0xa4a983…7b5aab | 35 days agoMon, 13 Jul 2026 08:50:30 UTC | 0x9799c8…ecab | [0] 0x000000000000…cc1f8a75 [1] 0xad6a30d0f13b…9f1a9723 [2] 0x000000000000…00000004 |
| 0xd7244c…6767fa | 35 days agoMon, 13 Jul 2026 07:17:55 UTC | 0x5cc3c6…58c3 | [0] 0x000000000000…5cc0e490 [1] 0x000000000000…b7c4fc3b [2] 0x000000000000…00010a01 data: 0x000000000000000000…e383bbda |
| 0xd7244c…6767fa | 35 days agoMon, 13 Jul 2026 07:17:55 UTC | 0x9799c8…ecab | [0] 0x000000000000…5cc0e490 [1] 0xe23398cd5b19…ca2b7a88 [2] 0x000000000000…00000003 |
| 0x45749e…03a6be | 35 days agoMon, 13 Jul 2026 07:08:54 UTC | 0x5cc3c6…58c3 | [0] 0x000000000000…117463d0 [1] 0x000000000000…b7c4fc3b [2] 0x000000000000…000109a2 data: 0x000000000000000000…e383bbda |
| 0x45749e…03a6be | 35 days agoMon, 13 Jul 2026 07:08:54 UTC | 0x9799c8…ecab | [0] 0x000000000000…117463d0 [1] 0x27ab01b0ee7b…b6840295 [2] 0x000000000000…00000002 |
| 0xd56429…394758 | 35 days agoMon, 13 Jul 2026 01:51:09 UTC | 0x5cc3c6…58c3 | [0] 0x000000000000…00bc50ee [1] 0x000000000000…70d77da9 [2] 0x000000000000…0001015c data: 0x000000000000000000…e383bbda |
| 0xd56429…394758 | 35 days agoMon, 13 Jul 2026 01:51:09 UTC | 0x9799c8…ecab | [0] 0x000000000000…00bc50ee [1] 0x29102a1b8f61…6790fd5e [2] 0x000000000000…00000001 |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x7d115f…92b42e | createTokenAndLaunch | 16,147,947 | 26 days agoWed, 22 Jul 2026 04:44:52 UTC | 0x1676…fc3b | IN | A20ProtocolRobinhoodLauncher | $0.000 ETH | 0.00017684 | |
| 0x2a1690…02a848 | createTokenAndLaunch | 13,768,764 | 29 days agoSun, 19 Jul 2026 10:28:03 UTC | 0x1676…fc3b | IN | A20ProtocolRobinhoodLauncher | $0.000 ETH | 0.00013273 | |
| 0x377b93…405198 | createTokenAndLaunch | 12,168,234 | 31 days agoFri, 17 Jul 2026 13:50:24 UTC | 0x1676…fc3b | IN | A20ProtocolRobinhoodLauncher | $0.000 ETH | 0.00017064 | |
| 0xc5c9a0…1da1d1 | createTokenAndLaunch | 12,167,059 | 31 days agoFri, 17 Jul 2026 13:48:27 UTC | 0x1676…fc3b | IN | A20ProtocolRobinhoodLauncher | $0.000 ETH | 0.00015994 | |
| 0xcf4a1d…af710d | createTokenAndLaunch | 10,606,593 | 33 days agoWed, 15 Jul 2026 18:23:15 UTC | 0x1676…fc3b | IN | A20ProtocolRobinhoodLauncher | $0.000 ETH | 0.00015625 | |
| 0xe99d7d…b4572c | createTokenAndLaunch | 9,634,983 | 34 days agoTue, 14 Jul 2026 15:24:32 UTC | 0x1676…fc3b | IN | A20ProtocolRobinhoodLauncher | $0.000 ETH | 0.00010285 | |
| 0x89b036…169378 | createTokenAndLaunch | 8,655,179 | 35 days agoMon, 13 Jul 2026 12:08:08 UTC | 0x1676…fc3b | IN | A20ProtocolRobinhoodLauncher | $0.000 ETH | 0.00010572 | |
| 0xd8f34b…fb72c7 | collectAndDistributeV4Fees | 8,555,078 | 35 days agoMon, 13 Jul 2026 09:21:04 UTC | 0x991f…df99 | IN | A20ProtocolRobinhoodLauncher | $0.000 ETH | 0.00001459 | |
| 0xa4a983…7b5aab | createTokenAndLaunch | 8,536,790 | 35 days agoMon, 13 Jul 2026 08:50:30 UTC | 0x1676…fc3b | IN | A20ProtocolRobinhoodLauncher | $0.000 ETH | 0.00010809 | |
| 0xd7244c…6767fa | createTokenAndLaunch | 8,481,281 | 35 days agoMon, 13 Jul 2026 07:17:55 UTC | 0x1676…fc3b | IN | A20ProtocolRobinhoodLauncher | $0.000 ETH | 0.00011142 | |
| 0x45749e…03a6be | createTokenAndLaunch | 8,475,893 | 35 days agoMon, 13 Jul 2026 07:08:54 UTC | 0x1676…fc3b | IN | A20ProtocolRobinhoodLauncher | $0.000 ETH | 0.00011076 | |
| 0xd56429…394758 | createTokenAndLaunch | 8,285,812 | 35 days agoMon, 13 Jul 2026 01:51:09 UTC | 0x1676…fc3b | IN | A20ProtocolRobinhoodLauncher | $0.000 ETH | 0.00012679 | |
| 0x4bc68b…d6d2d8 | createTokenAndLaunch | 7,780,191 | 36 days agoSun, 12 Jul 2026 11:46:57 UTC | 0x991f…df99 | IN | A20ProtocolRobinhoodLauncher | $0.000 ETH | 0.00012415 |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x7d115f79…92b42e | Transfer | 16,147,947 | 26 days agoWed, 22 Jul 2026 04:44:52 UTC | 0x0000…0000 | IN | 0xe724…c146 | Mint | Uniswap v4 Positions NFT (UNI-V4-POSM) #267674 | |
| 0x2a1690b3…02a848 | Transfer | 13,768,764 | 29 days agoSun, 19 Jul 2026 10:28:03 UTC | 0x0000…0000 | IN | 0xe724…c146 | Mint | Uniswap v4 Positions NFT (UNI-V4-POSM) #194878 | |
| 0x377b938e…405198 | Transfer | 12,168,234 | 31 days agoFri, 17 Jul 2026 13:50:24 UTC | 0x0000…0000 | IN | 0xe724…c146 | Mint | Uniswap v4 Positions NFT (UNI-V4-POSM) #161826 | |
| 0xc5c9a06d…1da1d1 | Transfer | 12,167,059 | 31 days agoFri, 17 Jul 2026 13:48:27 UTC | 0x0000…0000 | IN | 0xe724…c146 | Mint | Uniswap v4 Positions NFT (UNI-V4-POSM) #161799 | |
| 0xcf4a1d3b…af710d | Transfer | 10,606,593 | 33 days agoWed, 15 Jul 2026 18:23:15 UTC | 0x0000…0000 | IN | 0xe724…c146 | Mint | Uniswap v4 Positions NFT (UNI-V4-POSM) #123191 | |
| 0xe99d7dec…b4572c | Transfer | 9,634,983 | 34 days agoTue, 14 Jul 2026 15:24:32 UTC | 0x0000…0000 | IN | 0xe724…c146 | Mint | Uniswap v4 Positions NFT (UNI-V4-POSM) #93480 | |
| 0x89b0361c…169378 | Transfer | 8,655,179 | 35 days agoMon, 13 Jul 2026 12:08:08 UTC | 0x0000…0000 | IN | 0xe724…c146 | Mint | Uniswap v4 Positions NFT (UNI-V4-POSM) #70829 | |
| 0xa4a9837d…7b5aab | Transfer | 8,536,790 | 35 days agoMon, 13 Jul 2026 08:50:30 UTC | 0x0000…0000 | IN | 0xe724…c146 | Mint | Uniswap v4 Positions NFT (UNI-V4-POSM) #68818 | |
| 0xd7244ce0…6767fa | Transfer | 8,481,281 | 35 days agoMon, 13 Jul 2026 07:17:55 UTC | 0x0000…0000 | IN | 0xe724…c146 | Mint | Uniswap v4 Positions NFT (UNI-V4-POSM) #68097 | |
| 0x45749ed4…03a6be | Transfer | 8,475,893 | 35 days agoMon, 13 Jul 2026 07:08:54 UTC | 0x0000…0000 | IN | 0xe724…c146 | Mint | Uniswap v4 Positions NFT (UNI-V4-POSM) #68002 | |
| 0xd5642952…394758 | Transfer | 8,285,812 | 35 days agoMon, 13 Jul 2026 01:51:09 UTC | 0x0000…0000 | IN | 0xe724…c146 | Mint | Uniswap v4 Positions NFT (UNI-V4-POSM) #65884 | |
| 0x4bc68b72…d6d2d8 | Transfer | 7,780,191 | 36 days agoSun, 12 Jul 2026 11:46:57 UTC | 0x0000…0000 | IN | 0xe724…c146 | Mint | Uniswap v4 Positions NFT (UNI-V4-POSM) #55744 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x7d115f79…92b42e | Transfer | 16,147,947 | 26 days agoWed, 22 Jul 2026 04:44:52 UTC | 0xe724…c146 | OUT | 0x8366…0951 | 99,999,999,999.999991 qianbaidu | qianbaidu (qianbaidu) | |
| 0x7d115f79…92b42e | Transfer | 16,147,947 | 26 days agoWed, 22 Jul 2026 04:44:52 UTC | 0x0000…0000 | IN | 0xe724…c146 | 99,999,999,999.999991 qianbaidu | qianbaidu (qianbaidu) | |
| 0x2a1690b3…02a848 | Transfer | 13,768,764 | 29 days agoSun, 19 Jul 2026 10:28:03 UTC | 0xe724…c146 | OUT | 0x8366…0951 | 99,999,999,999.999991 DOG | DOG (DOG) | |
| 0x2a1690b3…02a848 | Transfer | 13,768,764 | 29 days agoSun, 19 Jul 2026 10:28:03 UTC | 0x0000…0000 | IN | 0xe724…c146 | 99,999,999,999.999991 DOG | DOG (DOG) | |
| 0x377b938e…405198 | Transfer | 12,168,234 | 31 days agoFri, 17 Jul 2026 13:50:24 UTC | 0xe724…c146 | OUT | 0x8366…0951 | 99,999,999,999.999991 GVLAD | Green Vlad (GVLAD) | |
| 0x377b938e…405198 | Transfer | 12,168,234 | 31 days agoFri, 17 Jul 2026 13:50:24 UTC | 0x0000…0000 | IN | 0xe724…c146 | 99,999,999,999.999991 GVLAD | Green Vlad (GVLAD) | |
| 0xc5c9a06d…1da1d1 | Transfer | 12,167,059 | 31 days agoFri, 17 Jul 2026 13:48:27 UTC | 0xe724…c146 | OUT | 0x8366…0951 | 99,999,999,999.999991 $GVLAD | Green Vlad ($GVLAD) | |
| 0xc5c9a06d…1da1d1 | Transfer | 12,167,059 | 31 days agoFri, 17 Jul 2026 13:48:27 UTC | 0x0000…0000 | IN | 0xe724…c146 | 99,999,999,999.999991 $GVLAD | Green Vlad ($GVLAD) | |
| 0xcf4a1d3b…af710d | Transfer | 10,606,593 | 33 days agoWed, 15 Jul 2026 18:23:15 UTC | 0xe724…c146 | OUT | 0x8366…0951 | 99,999,999,999.999991 BYEJESSE | BYEJESSE (BYEJESSE) | |
| 0xcf4a1d3b…af710d | Transfer | 10,606,593 | 33 days agoWed, 15 Jul 2026 18:23:15 UTC | 0x0000…0000 | IN | 0xe724…c146 | 99,999,999,999.999991 BYEJESSE | BYEJESSE (BYEJESSE) | |
| 0xe99d7dec…b4572c | Transfer | 9,634,983 | 34 days agoTue, 14 Jul 2026 15:24:32 UTC | 0xe724…c146 | OUT | 0x8366…0951 | 99,999,999,999.999991 BYENOXA | BYENOXA (BYENOXA) | |
| 0xe99d7dec…b4572c | Transfer | 9,634,983 | 34 days agoTue, 14 Jul 2026 15:24:32 UTC | 0x0000…0000 | IN | 0xe724…c146 | 99,999,999,999.999991 BYENOXA | BYENOXA (BYENOXA) | |
| 0x89b0361c…169378 | Transfer | 8,655,179 | 35 days agoMon, 13 Jul 2026 12:08:08 UTC | 0xe724…c146 | OUT | 0x8366…0951 | 99,999,999,999.999991 NFT | NFT (NFT) | |
| 0x89b0361c…169378 | Transfer | 8,655,179 | 35 days agoMon, 13 Jul 2026 12:08:08 UTC | 0x0000…0000 | IN | 0xe724…c146 | 99,999,999,999.999991 NFT | NFT (NFT) | |
| 0xd8f34b5a…fb72c7 | Transfer | 8,555,078 | 35 days agoMon, 13 Jul 2026 09:21:04 UTC | 0xe724…c146 | OUT | 0x991f…df99 | 0.007227 WETH | WETH (WETH) | |
| 0xd8f34b5a…fb72c7 | Transfer | 8,555,078 | 35 days agoMon, 13 Jul 2026 09:21:04 UTC | 0xe724…c146 | OUT | 0x1676…fc3b | 0.000072 WETH | WETH (WETH) | |
| 0xd8f34b5a…fb72c7 | Transfer | 8,555,078 | 35 days agoMon, 13 Jul 2026 09:21:04 UTC | 0xe724…c146 | OUT | 0x991f…df99 | 67,556,892.138398 GILL | GILL (GILL) | |
| 0xd8f34b5a…fb72c7 | Transfer | 8,555,078 | 35 days agoMon, 13 Jul 2026 09:21:04 UTC | 0xe724…c146 | OUT | 0x1676…fc3b | 682,392.849882 GILL | GILL (GILL) | |
| 0xd8f34b5a…fb72c7 | Transfer | 8,555,078 | 35 days agoMon, 13 Jul 2026 09:21:04 UTC | 0x8366…0951 | IN | 0xe724…c146 | 0.007299 WETH | WETH (WETH) | |
| 0xd8f34b5a…fb72c7 | Transfer | 8,555,078 | 35 days agoMon, 13 Jul 2026 09:21:04 UTC | 0x8366…0951 | IN | 0xe724…c146 | 68,239,284.988281 GILL | GILL (GILL) | |
| 0xa4a9837d…7b5aab | Transfer | 8,536,790 | 35 days agoMon, 13 Jul 2026 08:50:30 UTC | 0xe724…c146 | OUT | 0x8366…0951 | 99,999,999,999.999991 right | right (right) | |
| 0xa4a9837d…7b5aab | Transfer | 8,536,790 | 35 days agoMon, 13 Jul 2026 08:50:30 UTC | 0x0000…0000 | IN | 0xe724…c146 | 99,999,999,999.999991 right | right (right) | |
| 0xd7244ce0…6767fa | Transfer | 8,481,281 | 35 days agoMon, 13 Jul 2026 07:17:55 UTC | 0xe724…c146 | OUT | 0x8366…0951 | 99,999,999,999.999991 achieve today | achieve today (achieve today) | |
| 0xd7244ce0…6767fa | Transfer | 8,481,281 | 35 days agoMon, 13 Jul 2026 07:17:55 UTC | 0x0000…0000 | IN | 0xe724…c146 | 99,999,999,999.999991 achieve today | achieve today (achieve today) | |
| 0x45749ed4…03a6be | Transfer | 8,475,893 | 35 days agoMon, 13 Jul 2026 07:08:54 UTC | 0xe724…c146 | OUT | 0x8366…0951 | 99,999,999,999.999991 molt bank | molt bank (molt bank) |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 16,147,947 | 26 days agoWed, 22 Jul 2026 04:44:52 UTC | 0x7d115f…92b42e | CREATE2 | createTokenAndLaunch | 0xe724…c146 | OUT | 0x029e…6b5b | 0 ETH |
| 13,768,764 | 29 days agoSun, 19 Jul 2026 10:28:03 UTC | 0x2a1690…02a848 | CREATE2 | createTokenAndLaunch | 0xe724…c146 | OUT | 0x012d…a9e3 | 0 ETH |
| 12,168,234 | 31 days agoFri, 17 Jul 2026 13:50:24 UTC | 0x377b93…405198 | CREATE2 | createTokenAndLaunch | 0xe724…c146 | OUT | 0x01c1…b98c | 0 ETH |
| 12,167,059 | 31 days agoFri, 17 Jul 2026 13:48:27 UTC | 0xc5c9a0…1da1d1 | CREATE2 | createTokenAndLaunch | 0xe724…c146 | OUT | 0x00a6…5dab | 0 ETH |
| 10,606,593 | 33 days agoWed, 15 Jul 2026 18:23:15 UTC | 0xcf4a1d…af710d | CREATE2 | createTokenAndLaunch | 0xe724…c146 | OUT | 0x066c…0ae6 | 0 ETH |
| 7,780,191 | 36 days agoSun, 12 Jul 2026 11:46:57 UTC | 0x4bc68b…d6d2d8 | CREATE2 | createTokenAndLaunch | 0xe724…c146 | OUT | 0x07d1…e478 | 0 ETH |