Overview
FRAX Balance | FXTL Balance
FRAX Value
$0.00Latest 7 from a total of 7 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Bulk Set Delegat... | 4241198 | 624 days ago | IN | 0 FRAX | 0.00007313 | ||||
| Set Delegation | 2319256 | 669 days ago | IN | 0 FRAX | 0.00000298 | ||||
| Set Delegation | 2319235 | 669 days ago | IN | 0 FRAX | 0.00000835 | ||||
| Set Delegation F... | 2253764 | 670 days ago | IN | 0 FRAX | 0.0000021 | ||||
| Bulk Set Delegat... | 2214371 | 671 days ago | IN | 0 FRAX | 0.00110328 | ||||
| Bulk Set Delegat... | 1825786 | 680 days ago | IN | 0 FRAX | 0.00426721 | ||||
| Add Frax Contrib... | 1825314 | 680 days ago | IN | 0 FRAX | 0.00000979 |
View more zero value Internal Transactions in Advanced View mode
Cross-Chain Transactions
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.8.0;
// ====================================================================
// | ______ _______ |
// | / _____________ __ __ / ____(_____ ____ _____ ________ |
// | / /_ / ___/ __ `| |/_/ / /_ / / __ \/ __ `/ __ \/ ___/ _ \ |
// | / __/ / / / /_/ _> < / __/ / / / / / /_/ / / / / /__/ __/ |
// | /_/ /_/ \__,_/_/|_| /_/ /_/_/ /_/\__,_/_/ /_/\___/\___/ |
// | |
// ====================================================================
// ======================= Delegation Registry ========================
// ====================================================================
import { OwnedV2 } from "src/contracts/VestedFXS-and-Flox/VestedFXS/OwnedV2.sol";
import { IDelegationRegistryEvents } from "./IDelegationRegistryEvents.sol";
/**
* @title DelegationRegistry
* @author Frax Finance
* @notice The DelegationRegistry contract is used to manage delegations of Frax incentives and points.
*/
contract DelegationRegistry is OwnedV2, IDelegationRegistryEvents {
mapping(address => bool) public isFraxContributor;
mapping(address => bool) public selfManagingDelegations;
mapping(address => bool) public delegationManagementDisabled;
mapping(address => address) internal delegations;
/**
* @notice Used to initialize the smart contract.
* @dev The initial owner is set as the deployer of the smart contract.
*/
constructor() OwnedV2(msg.sender) {}
/**
* @notice Sets the delegation for the caller.
* @dev Once the delegation is set for self, the Frax contributors and delegatees can no longer manage the
* delegation of that address.
* @param delegatee Address to delegate to
*/
function setDelegationForSelf(address delegatee) external {
if (!selfManagingDelegations[msg.sender]) selfManagingDelegations[msg.sender] = true;
address previousDelegatee = delegations[msg.sender];
delegations[msg.sender] = delegatee;
emit DelegationUpdated(msg.sender, previousDelegatee, delegatee);
}
/**
* @notice Removes the delegation for the caller.
* @dev Once the delegation is removed for self, the Frax contributors and delegatees can no longer manage the
* delegation of that address.
* @dev The delegation is removed by setting the delegatee to the zero address.
*/
function removeDelegationForSelf() external {
if (!selfManagingDelegations[msg.sender]) selfManagingDelegations[msg.sender] = true;
address delegatee = delegations[msg.sender];
delete delegations[msg.sender];
emit DelegationUpdated(msg.sender, delegatee, address(0));
}
/**
* @notice Disables self-managing delegations for the caller.
* @dev Once the self-managing delegations are disabled for the caller, the Frax contributors and delegatees can
* manage the delegations of that address.
*/
function disableSelfManagingDelegations() external {
if (!selfManagingDelegations[msg.sender]) revert SelfManagingDelegationsDisabled();
selfManagingDelegations[msg.sender] = false;
}
/**
* @notice Disables delegation management for the caller.
* @dev Once the delegation management is disabled for the caller, the Frax contributors and delegatees can no
* longer manage the delegations of that address. The delegations can not be managed by the caller either.
* @dev The operation will be reverted if the delegation management is already disabled for the caller.
*/
function disableDelegationManagement() external {
if (delegationManagementDisabled[msg.sender]) revert DelegationManagementDisabled();
delegationManagementDisabled[msg.sender] = true;
}
/**
* @notice Sets the delegation for a delegator.
* @dev This can be used by Frax contributors and delegatees to manage the delegations of other addresses until the
* delegator sets or removes the delegation for self.
* @param delegator Address to set the delegation for
* @param delegatee Address to delegate to
*/
function setDelegation(address delegator, address delegatee) external {
if (selfManagingDelegations[delegator]) revert SelfManagingDelegations();
if (!isFraxContributor[msg.sender] && delegations[delegator] != msg.sender) {
revert NotFraxContributorOrDelegatee();
}
if (delegationManagementDisabled[delegator]) revert DelegationManagementDisabled();
address previousDelegatee = delegations[delegator];
delegations[delegator] = delegatee;
emit DelegationUpdated(delegator, previousDelegatee, delegatee);
}
/**
* @notice Removes the delegation for a delegator.
* @dev This can be used by Frax contributors and delegatees to remove the delegations of other addresses until the
* delegator sets or removes the delegation for self.
* @dev The delegation is removed by setting the delegatee to the zero address.
* @param delegator Address to remove the delegation for
*/
function removeDelegation(address delegator) external {
if (selfManagingDelegations[delegator]) revert SelfManagingDelegations();
if (!isFraxContributor[msg.sender] && delegations[delegator] != msg.sender) {
revert NotFraxContributorOrDelegatee();
}
if (delegationManagementDisabled[delegator]) revert DelegationManagementDisabled();
address delegatee = delegations[delegator];
delete delegations[delegator];
emit DelegationUpdated(delegator, delegatee, address(0));
}
/**
* @notice Sets delegations for multiple delegators as Frax contributor.
* @dev This can be used by Frax contributors to manage the delegations of multiple addresses until they set or
* remove delegations for self.
* @dev The `delegators` and `delegatees` arrays must be the same length.
* @dev If any of the `delegators` are self-managing, the operation will be reverted.
* @param delegators An array of addresses to set the delegations for
* @param delegatees An array of addresses to delegate to
*/
function bulkSetDelegationsAsFraxContributor(address[] memory delegators, address[] memory delegatees) external {
_onlyFraxContributor();
if (delegators.length != delegatees.length) revert ArrayLengthMismatch();
address previousDelegatee;
for (uint256 i; i < delegators.length; ) {
if (selfManagingDelegations[delegators[i]]) revert SelfManagingDelegations();
if (delegationManagementDisabled[delegators[i]]) revert DelegationManagementDisabled();
previousDelegatee = delegations[delegators[i]];
delegations[delegators[i]] = delegatees[i];
emit DelegationUpdated(delegators[i], previousDelegatee, delegatees[i]);
unchecked {
++i;
}
}
}
/**
* @notice Removes delegations for multiple delegators as Frax contributor.
* @dev This can be used by Frax contributors to remove the delegations of multiple addresses until they set or
* remove the delegations for self.
* @dev If any of the `delegators` are self-managing, the operation will be reverted.
* @param delegators An array of addresses to remove the delegations for
*/
function bulkRemoveDelegationsAsFraxContributor(address[] memory delegators) external {
_onlyFraxContributor();
address delegatee;
for (uint256 i; i < delegators.length; ) {
if (selfManagingDelegations[delegators[i]]) revert SelfManagingDelegations();
if (delegationManagementDisabled[delegators[i]]) revert DelegationManagementDisabled();
delegatee = delegations[delegators[i]];
delete delegations[delegators[i]];
emit DelegationUpdated(delegators[i], delegatee, address(0));
unchecked {
++i;
}
}
}
/**
* @notice Sets delegations for multiple delegators as delegatee.
* @dev This can be used by delegatee to manage the delegations of multiple addresses until they set or remove
* delegations for self.
* @dev The `delegators` and `delegatees` arrays must be the same length.
* @dev If any of the `delegators` are self-managing, the operation will be reverted.
* @param delegators An array of addresses to set the delegations for
* @param delegatees An array of addresses to delegate to
*/
function bulkSetDelegationsAsDelegatee(address[] memory delegators, address[] memory delegatees) external {
if (delegators.length != delegatees.length) revert ArrayLengthMismatch();
address previousDelegatee;
for (uint256 i; i < delegators.length; ) {
if (selfManagingDelegations[delegators[i]]) revert SelfManagingDelegations();
if (msg.sender != delegations[delegators[i]]) revert NotDelegatee();
if (delegationManagementDisabled[delegators[i]]) revert DelegationManagementDisabled();
previousDelegatee = delegations[delegators[i]];
delegations[delegators[i]] = delegatees[i];
emit DelegationUpdated(delegators[i], previousDelegatee, delegatees[i]);
unchecked {
++i;
}
}
}
/**
* @notice Removes delegations for multiple delegators as delegatee.
* @dev This can be used by delegatee to remove the delegations of multiple addresses until they set or remove the
* delegations for self.
* @dev If any of the `delegators` are self-managing, the operation will be reverted.
* @param delegators An array of addresses to remove the delegations for
*/
function bulkRemoveDelegationsAsDelegatee(address[] memory delegators) external {
address delegatee;
for (uint256 i; i < delegators.length; ) {
if (selfManagingDelegations[delegators[i]]) revert SelfManagingDelegations();
if (msg.sender != delegations[delegators[i]]) revert NotDelegatee();
if (delegationManagementDisabled[delegators[i]]) revert DelegationManagementDisabled();
delegatee = delegations[delegators[i]];
delete delegations[delegators[i]];
emit DelegationUpdated(delegators[i], delegatee, address(0));
unchecked {
++i;
}
}
}
/**
* @notice Adds an address as a Frax contributor.
* @dev This can only be called by the owner of the smart contract.
* @dev The operation will be reverted if the address is already a Frax contributor.
* @param contributor Address to add as a Frax contributor
*/
function addFraxContributor(address contributor) external {
_onlyOwner();
if (isFraxContributor[contributor]) revert AlreadyFraxContributor();
isFraxContributor[contributor] = true;
emit FraxContributorAdded(contributor);
}
/**
* @notice Removes an address as a Frax contributor.
* @dev This can only be called by the owner of the smart contract.
* @dev The operation will be reverted if the address is not a Frax contributor.
* @param contributor Address to remove as a Frax contributor
*/
function removeFraxContributor(address contributor) external {
_onlyOwner();
if (!isFraxContributor[contributor]) revert NotFraxContributor();
isFraxContributor[contributor] = false;
emit FraxContributorRemoved(contributor);
}
/**
* @notice Re-enables delegation management for an address.
* @dev This can only be called by a Frax contributor.
* @dev The operation will be reverted if the delegation management is already enabled for the address.
* @dev This function is intended to be called in the occasion that the delegation management was disabled by
* mistake or if the delegatee address was compromised.
* @dev If you require to re-enable the delegation management for an address, please contact the Frax team.
* @param delegator Address to re-enable the delegation management for
*/
function reenableDelegationManagement(address delegator) external {
_onlyFraxContributor();
if (!delegationManagementDisabled[delegator]) revert DelegationManagementEnabled();
delegationManagementDisabled[delegator] = false;
}
/**
* @notice Gets the delegation for a delegator.
* @dev If the delegation is not set for the delegator, the delegator is the delegatee.
* @param delegator Address to get the delegation for
* @return Address that the delegator is delegating to
*/
function delegationsOf(address delegator) external view returns (address) {
address delegatee;
delegatee = delegations[delegator] == address(0) ? delegator : delegations[delegator];
return delegatee;
}
/**
* @notice Gets the delegations for multiple delegators.
* @dev If the delegation is not set for a delegator, the delegator is the delegatee.
* @param delegators An array of addresses to get the delegations for
* @return An array of addresses that the delegators are delegating to
*/
function bulkDelegationsOf(address[] memory delegators) external view returns (address[] memory) {
address[] memory delegatees = new address[](delegators.length);
for (uint256 i; i < delegators.length; ) {
delegatees[i] = delegations[delegators[i]] == address(0) ? delegators[i] : delegations[delegators[i]];
unchecked {
++i;
}
}
return delegatees;
}
/**
* @notice Checks if the msg sender is a Frax contributor.
* @dev It the msg.sender is not a Frax contributor, the operation will be reverted.
*/
function _onlyFraxContributor() internal view {
if (!isFraxContributor[msg.sender]) revert NotFraxContributor();
}
/// @notice The address is already a Frax contributor
error AlreadyFraxContributor();
/// @notice The array lengths are mismatched
error ArrayLengthMismatch();
/// @notice The delegation management is already disabled
error DelegationManagementDisabled();
/// @notice The delegation management is already enabled
error DelegationManagementEnabled();
/// @notice Only the delegatee is allowed to perform this action
error NotDelegatee();
/// @notice Only a Frax contributor is allowed to perform this action
error NotFraxContributor();
/// @notice Only a Frax contributor or delegatee is allowed to perform this action
error NotFraxContributorOrDelegatee();
/// @notice The delegator is managing their own delegations and is the only address allowed to perform this action
error SelfManagingDelegations();
/// @notice The delegator is not managing their own delegations
error SelfManagingDelegationsDisabled();
}// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.8.0;
// https://docs.synthetix.io/contracts/Owned
contract OwnedV2 {
error OwnerCannotBeZero();
error InvalidOwnershipAcceptance();
error OnlyOwner();
address public owner;
address public nominatedOwner;
constructor(address _owner) {
// require(_owner != address(0), "Owner address cannot be 0");
if (_owner == address(0)) revert OwnerCannotBeZero();
owner = _owner;
emit OwnerChanged(address(0), _owner);
}
function nominateNewOwner(address _owner) external onlyOwner {
nominatedOwner = _owner;
emit OwnerNominated(_owner);
}
function acceptOwnership() external {
// require(msg.sender == nominatedOwner, "You must be nominated before you can accept ownership");
if (msg.sender != nominatedOwner) revert InvalidOwnershipAcceptance();
emit OwnerChanged(owner, nominatedOwner);
owner = nominatedOwner;
nominatedOwner = address(0);
}
modifier onlyOwner() {
// require(msg.sender == owner, "Only the contract owner may perform this action");
if (msg.sender != owner) revert OnlyOwner();
_;
}
function _onlyOwner() internal view {
if (msg.sender != owner) revert OnlyOwner();
}
event OwnerNominated(address newOwner);
event OwnerChanged(address oldOwner, address newOwner);
}// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.8.0;
// ====================================================================
// | ______ _______ |
// | / _____________ __ __ / ____(_____ ____ _____ ________ |
// | / /_ / ___/ __ `| |/_/ / /_ / / __ \/ __ `/ __ \/ ___/ _ \ |
// | / __/ / / / /_/ _> < / __/ / / / / / /_/ / / / / /__/ __/ |
// | /_/ /_/ \__,_/_/|_| /_/ /_/_/ /_/\__,_/_/ /_/\___/\___/ |
// | |
// ====================================================================
// ==================== IDelegationRegistryEvents =====================
// ====================================================================
/**
* @title IDelegationRegistryEvents
* @author Frax Finance
* @notice A collection of events used by the Flox DelegationRegistry
*/
contract IDelegationRegistryEvents {
/**
* @notice Emitted when a delegator updates their delegation settings.
* @param delegator Address delegating their points
* @param previousDelegatee Address that the delegator delegated to before
* @param newDelegatee Address that the delegator is delegating to now
*/
event DelegationUpdated(address indexed delegator, address indexed previousDelegatee, address indexed newDelegatee);
/**
* @notice Emitted when a new address is added as a Frax Contributor.
* @param contributor The address added as the contributor
*/
event FraxContributorAdded(address indexed contributor);
/**
* @notice Emitted when an address is removed as a Frax Contributor.
* @param contributor The address removed as the contributor
*/
event FraxContributorRemoved(address indexed contributor);
}{
"remappings": [
"frax-std/=lib/frax-standard-solidity/src/",
"@eth-optimism/=lib/optimism/packages/",
"lib/optimism/packages/contracts-bedrock:src/=lib/optimism/packages/contracts-bedrock/src/",
"src/=src/",
"@openzeppelin-4/=node_modules/@openzeppelin-4/",
"@openzeppelin-5/=node_modules/@openzeppelin-5/",
"@openzeppelin/=node_modules/@openzeppelin/",
"@rari-capital/=node_modules/@rari-capital/",
"clones-with-immutable-args/=lib/optimism/packages/contracts-bedrock/lib/clones-with-immutable-args/src/",
"ds-test/=lib/frax-standard-solidity/lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/frax-standard-solidity/lib/forge-std/src/",
"frax-standard-solidity/=lib/frax-standard-solidity/src/",
"kontrol-cheatcodes/=lib/optimism/packages/contracts-bedrock/lib/kontrol-cheatcodes/src/",
"lib-keccak/=lib/optimism/packages/contracts-bedrock/lib/lib-keccak/contracts/",
"openzeppelin-contracts-upgradeable/=lib/optimism/packages/contracts-bedrock/lib/openzeppelin-contracts-upgradeable/",
"openzeppelin-contracts/=lib/optimism/packages/contracts-bedrock/lib/openzeppelin-contracts/",
"optimism/=lib/optimism/",
"safe-contracts/=lib/optimism/packages/contracts-bedrock/lib/safe-contracts/contracts/",
"solady/=lib/optimism/packages/contracts-bedrock/lib/solady/",
"solidity-bytes-utils/=lib/frax-standard-solidity/lib/solidity-bytes-utils/",
"solmate/=lib/optimism/packages/contracts-bedrock/lib/solmate/src/"
],
"optimizer": {
"enabled": true,
"runs": 10000
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "paris",
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyFraxContributor","type":"error"},{"inputs":[],"name":"ArrayLengthMismatch","type":"error"},{"inputs":[],"name":"DelegationManagementDisabled","type":"error"},{"inputs":[],"name":"DelegationManagementEnabled","type":"error"},{"inputs":[],"name":"InvalidOwnershipAcceptance","type":"error"},{"inputs":[],"name":"NotDelegatee","type":"error"},{"inputs":[],"name":"NotFraxContributor","type":"error"},{"inputs":[],"name":"NotFraxContributorOrDelegatee","type":"error"},{"inputs":[],"name":"OnlyOwner","type":"error"},{"inputs":[],"name":"OwnerCannotBeZero","type":"error"},{"inputs":[],"name":"SelfManagingDelegations","type":"error"},{"inputs":[],"name":"SelfManagingDelegationsDisabled","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"previousDelegatee","type":"address"},{"indexed":true,"internalType":"address","name":"newDelegatee","type":"address"}],"name":"DelegationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contributor","type":"address"}],"name":"FraxContributorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contributor","type":"address"}],"name":"FraxContributorRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contributor","type":"address"}],"name":"addFraxContributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"delegators","type":"address[]"}],"name":"bulkDelegationsOf","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"delegators","type":"address[]"}],"name":"bulkRemoveDelegationsAsDelegatee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"delegators","type":"address[]"}],"name":"bulkRemoveDelegationsAsFraxContributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"delegators","type":"address[]"},{"internalType":"address[]","name":"delegatees","type":"address[]"}],"name":"bulkSetDelegationsAsDelegatee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"delegators","type":"address[]"},{"internalType":"address[]","name":"delegatees","type":"address[]"}],"name":"bulkSetDelegationsAsFraxContributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegationManagementDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"delegationsOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableDelegationManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableSelfManagingDelegations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFraxContributor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"reenableDelegationManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"removeDelegation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeDelegationForSelf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contributor","type":"address"}],"name":"removeFraxContributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"selfManagingDelegations","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"delegatee","type":"address"}],"name":"setDelegation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"setDelegationForSelf","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b50338061003057604051639b15e16f60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a150611ac3806100976000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806394b41f91116100d8578063aaa54e0d1161008c578063dbc99d4b11610066578063dbc99d4b14610313578063f0466c7314610336578063feae99c51461034957600080fd5b8063aaa54e0d146102ca578063b41a5258146102dd578063d8d9ec00146102f057600080fd5b8063a1ac4e85116100bd578063a1ac4e851461029c578063a358626c146102af578063a7e68146146102c257600080fd5b806394b41f9114610276578063989d1a871461028957600080fd5b806353a47bb71161013a57806379ba50971161011457806379ba5097146102285780637f880ec7146102305780638da5cb5b1461026357600080fd5b806353a47bb7146101dd5780635f8cdba61461020d5780636889fae21461021557600080fd5b806325ce9a371161016b57806325ce9a37146101af5780634e271772146101b7578063513e0736146101ca57600080fd5b806302b8a21d146101875780631627540c1461019c575b600080fd5b61019a610195366004611830565b610369565b005b61019a6101aa366004611830565b610411565b61019a6104c1565b61019a6101c5366004611830565b610523565b61019a6101d836600461193d565b61059e565b6001546101f0906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61019a610822565b6101f0610223366004611830565b6108c4565b61019a610911565b61025361023e366004611830565b60046020526000908152604090205460ff1681565b6040519015158152602001610204565b6000546101f0906001600160a01b031681565b61019a61028436600461193d565b6109df565b61019a610297366004611830565b610bf0565b61019a6102aa36600461197a565b610c97565b61019a6102bd36600461197a565b610f97565b61019a611223565b61019a6102d83660046119de565b611289565b61019a6102eb366004611830565b61141c565b6102536102fe366004611830565b60026020526000908152604090205460ff1681565b610253610321366004611830565b60036020526000908152604090205460ff1681565b61019a610344366004611830565b6114bf565b61035c61035736600461193d565b61164a565b6040516102049190611a11565b3360009081526003602052604090205460ff1661039b57336000908152600360205260409020805460ff191660011790555b3360008181526005602052604080822080546001600160a01b038681167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093559251921693909284927f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c9190a45050565b6000546001600160a01b03163314610455576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b3360009081526003602052604090205460ff1661050a576040517fed6a321200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600360205260409020805460ff19169055565b61052b611785565b6001600160a01b03811660009081526004602052604090205460ff1661057d576040517f20f57baf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000805b825181101561081d57600360008483815181106105c1576105c1611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161561061f576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600084838151811061063557610635611a5e565b6020908102919091018101516001600160a01b0390811683529082019290925260400160002054163314610695576040517f2b590dc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008483815181106106ab576106ab611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610709576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600084838151811061071f5761071f611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b031691506005600084838151811061077357610773611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154906001600160a01b03021916905560006001600160a01b0316826001600160a01b03168483815181106107d8576107d8611a5e565b60200260200101516001600160a01b03167f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c60405160405180910390a46001016105a2565b505050565b3360009081526003602052604090205460ff1661085457336000908152600360205260409020805460ff191660011790555b3360008181526005602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811690915590516001600160a01b039091169283917f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c908490a450565b6001600160a01b03818116600090815260056020526040812054909182911615610908576001600160a01b038084166000908152600560205260409020541661090a565b825b9392505050565b6001546001600160a01b03163314610955576040517fd74b334e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b03841617909155169055565b6109e7611785565b6000805b825181101561081d5760036000848381518110610a0a57610a0a611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610a68576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60046000848381518110610a7e57610a7e611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610adc576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056000848381518110610af257610af2611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b0316915060056000848381518110610b4657610b46611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154906001600160a01b03021916905560006001600160a01b0316826001600160a01b0316848381518110610bab57610bab611a5e565b60200260200101516001600160a01b03167f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c60405160405180910390a46001016109eb565b610bf86117d0565b6001600160a01b03811660009081526002602052604090205460ff1615610c4b576040517f70b9b0d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600081815260026020526040808220805460ff19166001179055517fe2d01cc637b0a35c9a2dde2789da012cf2b5d14caa779d280c35209b48c31cf29190a250565b8051825114610cd2576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8351811015610f915760036000858381518110610cf557610cf5611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610d53576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056000858381518110610d6957610d69611a5e565b6020908102919091018101516001600160a01b0390811683529082019290925260400160002054163314610dc9576040517f2b590dc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60046000858381518110610ddf57610ddf611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610e3d576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056000858381518110610e5357610e53611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b03169150828181518110610ea357610ea3611a5e565b602002602001015160056000868481518110610ec157610ec1611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550828181518110610f1f57610f1f611a5e565b60200260200101516001600160a01b0316826001600160a01b0316858381518110610f4c57610f4c611a5e565b60200260200101516001600160a01b03167f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c60405160405180910390a4600101610cd6565b50505050565b610f9f611785565b8051825114610fda576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8351811015610f915760036000858381518110610ffd57610ffd611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161561105b576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004600085838151811061107157611071611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16156110cf576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008583815181106110e5576110e5611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b0316915082818151811061113557611135611a5e565b60200260200101516005600086848151811061115357611153611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508281815181106111b1576111b1611a5e565b60200260200101516001600160a01b0316826001600160a01b03168583815181106111de576111de611a5e565b60200260200101516001600160a01b03167f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c60405160405180910390a4600101610fde565b3360009081526004602052604090205460ff161561126d576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600460205260409020805460ff19166001179055565b6001600160a01b03821660009081526003602052604090205460ff16156112dc576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526002602052604090205460ff1615801561131657506001600160a01b03828116600090815260056020526040902054163314155b1561134d576040517ff60d93b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205460ff16156113a0576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0380831660008181526005602052604080822080548686167fffffffffffffffffffffffff0000000000000000000000000000000000000000821681179092559151919094169392849290917f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c9190a4505050565b6114246117d0565b6001600160a01b03811660009081526002602052604090205460ff16611476576040517fd56b8a2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600081815260026020526040808220805460ff19169055517f09af5383361cf92f81a21f5147c84aed80ff6d5087bf486623c1d7c43699ab9e9190a250565b6001600160a01b03811660009081526003602052604090205460ff1615611512576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526002602052604090205460ff1615801561154c57506001600160a01b03818116600090815260056020526040902054163314155b15611583576040517ff60d93b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811660009081526004602052604090205460ff16156115d6576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0380821660008181526005602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000081169091559051931692909183917f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c908490a45050565b60606000825167ffffffffffffffff8111156116685761166861184b565b604051908082528060200260200182016040528015611691578160200160208202803683370190505b50905060005b835181101561177e5760006001600160a01b0316600560008684815181106116c1576116c1611a5e565b6020908102919091018101516001600160a01b03908116835290820192909252604001600020541614611731576005600085838151811061170457611704611a5e565b6020908102919091018101516001600160a01b03908116835290820192909252604001600020541661174c565b83818151811061174357611743611a5e565b60200260200101515b82828151811061175e5761175e611a5e565b6001600160a01b0390921660209283029190910190910152600101611697565b5092915050565b3360009081526002602052604090205460ff166117ce576040517fd56b8a2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000546001600160a01b031633146117ce576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461182b57600080fd5b919050565b60006020828403121561184257600080fd5b61090a82611814565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261188b57600080fd5b8135602067ffffffffffffffff808311156118a8576118a861184b565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811084821117156118eb576118eb61184b565b604052938452602081870181019490810192508785111561190b57600080fd5b6020870191505b848210156119325761192382611814565b83529183019190830190611912565b979650505050505050565b60006020828403121561194f57600080fd5b813567ffffffffffffffff81111561196657600080fd5b6119728482850161187a565b949350505050565b6000806040838503121561198d57600080fd5b823567ffffffffffffffff808211156119a557600080fd5b6119b18683870161187a565b935060208501359150808211156119c757600080fd5b506119d48582860161187a565b9150509250929050565b600080604083850312156119f157600080fd5b6119fa83611814565b9150611a0860208401611814565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015611a525783516001600160a01b031683529284019291840191600101611a2d565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220a5bb56f29b4b96093ae37f4402945b63d6cecaf6327f19e8d0f82d08d636466c64736f6c63430008170033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101825760003560e01c806394b41f91116100d8578063aaa54e0d1161008c578063dbc99d4b11610066578063dbc99d4b14610313578063f0466c7314610336578063feae99c51461034957600080fd5b8063aaa54e0d146102ca578063b41a5258146102dd578063d8d9ec00146102f057600080fd5b8063a1ac4e85116100bd578063a1ac4e851461029c578063a358626c146102af578063a7e68146146102c257600080fd5b806394b41f9114610276578063989d1a871461028957600080fd5b806353a47bb71161013a57806379ba50971161011457806379ba5097146102285780637f880ec7146102305780638da5cb5b1461026357600080fd5b806353a47bb7146101dd5780635f8cdba61461020d5780636889fae21461021557600080fd5b806325ce9a371161016b57806325ce9a37146101af5780634e271772146101b7578063513e0736146101ca57600080fd5b806302b8a21d146101875780631627540c1461019c575b600080fd5b61019a610195366004611830565b610369565b005b61019a6101aa366004611830565b610411565b61019a6104c1565b61019a6101c5366004611830565b610523565b61019a6101d836600461193d565b61059e565b6001546101f0906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61019a610822565b6101f0610223366004611830565b6108c4565b61019a610911565b61025361023e366004611830565b60046020526000908152604090205460ff1681565b6040519015158152602001610204565b6000546101f0906001600160a01b031681565b61019a61028436600461193d565b6109df565b61019a610297366004611830565b610bf0565b61019a6102aa36600461197a565b610c97565b61019a6102bd36600461197a565b610f97565b61019a611223565b61019a6102d83660046119de565b611289565b61019a6102eb366004611830565b61141c565b6102536102fe366004611830565b60026020526000908152604090205460ff1681565b610253610321366004611830565b60036020526000908152604090205460ff1681565b61019a610344366004611830565b6114bf565b61035c61035736600461193d565b61164a565b6040516102049190611a11565b3360009081526003602052604090205460ff1661039b57336000908152600360205260409020805460ff191660011790555b3360008181526005602052604080822080546001600160a01b038681167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093559251921693909284927f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c9190a45050565b6000546001600160a01b03163314610455576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b3360009081526003602052604090205460ff1661050a576040517fed6a321200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600360205260409020805460ff19169055565b61052b611785565b6001600160a01b03811660009081526004602052604090205460ff1661057d576040517f20f57baf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000805b825181101561081d57600360008483815181106105c1576105c1611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161561061f576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600084838151811061063557610635611a5e565b6020908102919091018101516001600160a01b0390811683529082019290925260400160002054163314610695576040517f2b590dc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008483815181106106ab576106ab611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610709576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600084838151811061071f5761071f611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b031691506005600084838151811061077357610773611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154906001600160a01b03021916905560006001600160a01b0316826001600160a01b03168483815181106107d8576107d8611a5e565b60200260200101516001600160a01b03167f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c60405160405180910390a46001016105a2565b505050565b3360009081526003602052604090205460ff1661085457336000908152600360205260409020805460ff191660011790555b3360008181526005602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811690915590516001600160a01b039091169283917f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c908490a450565b6001600160a01b03818116600090815260056020526040812054909182911615610908576001600160a01b038084166000908152600560205260409020541661090a565b825b9392505050565b6001546001600160a01b03163314610955576040517fd74b334e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b03841617909155169055565b6109e7611785565b6000805b825181101561081d5760036000848381518110610a0a57610a0a611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610a68576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60046000848381518110610a7e57610a7e611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610adc576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056000848381518110610af257610af2611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b0316915060056000848381518110610b4657610b46611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154906001600160a01b03021916905560006001600160a01b0316826001600160a01b0316848381518110610bab57610bab611a5e565b60200260200101516001600160a01b03167f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c60405160405180910390a46001016109eb565b610bf86117d0565b6001600160a01b03811660009081526002602052604090205460ff1615610c4b576040517f70b9b0d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600081815260026020526040808220805460ff19166001179055517fe2d01cc637b0a35c9a2dde2789da012cf2b5d14caa779d280c35209b48c31cf29190a250565b8051825114610cd2576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8351811015610f915760036000858381518110610cf557610cf5611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610d53576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056000858381518110610d6957610d69611a5e565b6020908102919091018101516001600160a01b0390811683529082019290925260400160002054163314610dc9576040517f2b590dc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60046000858381518110610ddf57610ddf611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610e3d576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056000858381518110610e5357610e53611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b03169150828181518110610ea357610ea3611a5e565b602002602001015160056000868481518110610ec157610ec1611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550828181518110610f1f57610f1f611a5e565b60200260200101516001600160a01b0316826001600160a01b0316858381518110610f4c57610f4c611a5e565b60200260200101516001600160a01b03167f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c60405160405180910390a4600101610cd6565b50505050565b610f9f611785565b8051825114610fda576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8351811015610f915760036000858381518110610ffd57610ffd611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161561105b576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004600085838151811061107157611071611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16156110cf576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008583815181106110e5576110e5611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b0316915082818151811061113557611135611a5e565b60200260200101516005600086848151811061115357611153611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508281815181106111b1576111b1611a5e565b60200260200101516001600160a01b0316826001600160a01b03168583815181106111de576111de611a5e565b60200260200101516001600160a01b03167f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c60405160405180910390a4600101610fde565b3360009081526004602052604090205460ff161561126d576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600460205260409020805460ff19166001179055565b6001600160a01b03821660009081526003602052604090205460ff16156112dc576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526002602052604090205460ff1615801561131657506001600160a01b03828116600090815260056020526040902054163314155b1561134d576040517ff60d93b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205460ff16156113a0576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0380831660008181526005602052604080822080548686167fffffffffffffffffffffffff0000000000000000000000000000000000000000821681179092559151919094169392849290917f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c9190a4505050565b6114246117d0565b6001600160a01b03811660009081526002602052604090205460ff16611476576040517fd56b8a2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600081815260026020526040808220805460ff19169055517f09af5383361cf92f81a21f5147c84aed80ff6d5087bf486623c1d7c43699ab9e9190a250565b6001600160a01b03811660009081526003602052604090205460ff1615611512576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526002602052604090205460ff1615801561154c57506001600160a01b03818116600090815260056020526040902054163314155b15611583576040517ff60d93b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811660009081526004602052604090205460ff16156115d6576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0380821660008181526005602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000081169091559051931692909183917f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c908490a45050565b60606000825167ffffffffffffffff8111156116685761166861184b565b604051908082528060200260200182016040528015611691578160200160208202803683370190505b50905060005b835181101561177e5760006001600160a01b0316600560008684815181106116c1576116c1611a5e565b6020908102919091018101516001600160a01b03908116835290820192909252604001600020541614611731576005600085838151811061170457611704611a5e565b6020908102919091018101516001600160a01b03908116835290820192909252604001600020541661174c565b83818151811061174357611743611a5e565b60200260200101515b82828151811061175e5761175e611a5e565b6001600160a01b0390921660209283029190910190910152600101611697565b5092915050565b3360009081526002602052604090205460ff166117ce576040517fd56b8a2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000546001600160a01b031633146117ce576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461182b57600080fd5b919050565b60006020828403121561184257600080fd5b61090a82611814565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261188b57600080fd5b8135602067ffffffffffffffff808311156118a8576118a861184b565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811084821117156118eb576118eb61184b565b604052938452602081870181019490810192508785111561190b57600080fd5b6020870191505b848210156119325761192382611814565b83529183019190830190611912565b979650505050505050565b60006020828403121561194f57600080fd5b813567ffffffffffffffff81111561196657600080fd5b6119728482850161187a565b949350505050565b6000806040838503121561198d57600080fd5b823567ffffffffffffffff808211156119a557600080fd5b6119b18683870161187a565b935060208501359150808211156119c757600080fd5b506119d48582860161187a565b9150509250929050565b600080604083850312156119f157600080fd5b6119fa83611814565b9150611a0860208401611814565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015611a525783516001600160a01b031683529284019291840191600101611a2d565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220a5bb56f29b4b96093ae37f4402945b63d6cecaf6327f19e8d0f82d08d636466c64736f6c63430008170033
Net Worth in USD
Net Worth in FRAX
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.