More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 416,672 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Exec With Sig | 39612888 | 2 hrs ago | IN | 0 xDAI | 0.00022023 | ||||
Exec With Sig | 39611355 | 4 hrs ago | IN | 0 xDAI | 0.00025441 | ||||
Exec With Sig | 39607969 | 9 hrs ago | IN | 0 xDAI | 0.00019104 | ||||
Exec With Sig | 39607581 | 9 hrs ago | IN | 0 xDAI | 0.00019295 | ||||
Exec With Sig | 39603699 | 15 hrs ago | IN | 0 xDAI | 0.00019314 | ||||
Exec With Sig | 39603546 | 15 hrs ago | IN | 0 xDAI | 0.00019196 | ||||
Exec With Sig | 39603380 | 15 hrs ago | IN | 0 xDAI | 0.00019102 | ||||
Exec With Sig | 39603319 | 15 hrs ago | IN | 0 xDAI | 0.00019467 | ||||
Exec With Sig | 39602594 | 16 hrs ago | IN | 0 xDAI | 0.0001344 | ||||
Exec With Sig | 39601462 | 18 hrs ago | IN | 0 xDAI | 0.00019822 | ||||
Exec With Sig | 39601292 | 18 hrs ago | IN | 0 xDAI | 0.00021013 | ||||
Exec With Sig | 39600945 | 19 hrs ago | IN | 0 xDAI | 0.00011027 | ||||
Exec With Sig | 39597771 | 23 hrs ago | IN | 0 xDAI | 0.00012791 | ||||
Exec With Sig | 39595274 | 27 hrs ago | IN | 0 xDAI | 0.00037993 | ||||
Exec With Sig | 39595274 | 27 hrs ago | IN | 0 xDAI | 0.00037814 | ||||
Exec With Sig | 39595274 | 27 hrs ago | IN | 0 xDAI | 0.00037994 | ||||
Exec With Sig | 39595274 | 27 hrs ago | IN | 0 xDAI | 0.00037994 | ||||
Exec With Sig | 39595274 | 27 hrs ago | IN | 0 xDAI | 0.00037995 | ||||
Exec With Sig | 39595274 | 27 hrs ago | IN | 0 xDAI | 0.00037995 | ||||
Exec With Sig | 39595274 | 27 hrs ago | IN | 0 xDAI | 0.00037995 | ||||
Exec With Sig | 39595274 | 27 hrs ago | IN | 0 xDAI | 0.00037995 | ||||
Exec With Sig | 39595274 | 27 hrs ago | IN | 0 xDAI | 0.00037995 | ||||
Exec With Sig | 39595274 | 27 hrs ago | IN | 0 xDAI | 0.00037995 | ||||
Exec With Sig | 39595274 | 27 hrs ago | IN | 0 xDAI | 0.00037995 | ||||
Exec With Sig | 39595274 | 27 hrs ago | IN | 0 xDAI | 0.00037993 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
35948422 | 218 days ago | 0.00250128 xDAI | ||||
35939479 | 218 days ago | 0.00169519 xDAI | ||||
35917462 | 220 days ago | 0.00081848 xDAI | ||||
35914754 | 220 days ago | 0.00186102 xDAI | ||||
35881009 | 222 days ago | 0.00215628 xDAI | ||||
35866849 | 223 days ago | 0.00151433 xDAI | ||||
35847452 | 224 days ago | 0.00096097 xDAI | ||||
35847361 | 224 days ago | 0.00185886 xDAI | ||||
35845972 | 224 days ago | 0.00185153 xDAI | ||||
35845956 | 224 days ago | 0.00151313 xDAI | ||||
35821703 | 225 days ago | 0.00135738 xDAI | ||||
35816509 | 226 days ago | 0.0010575 xDAI | ||||
35813821 | 226 days ago | 0.00214981 xDAI | ||||
35780236 | 228 days ago | 0.00163877 xDAI | ||||
35766185 | 229 days ago | 0.00091421 xDAI | ||||
35746812 | 230 days ago | 0.00193085 xDAI | ||||
35716300 | 232 days ago | 0.000835 xDAI | ||||
35713593 | 232 days ago | 0.00207793 xDAI | ||||
35704720 | 232 days ago | 0.00190447 xDAI | ||||
35680144 | 234 days ago | 0.0010415 xDAI | ||||
35680033 | 234 days ago | 0.00154102 xDAI | ||||
35665991 | 235 days ago | 0.00084305 xDAI | ||||
35646535 | 236 days ago | 0.00149241 xDAI | ||||
35615797 | 238 days ago | 0.00137114 xDAI | ||||
35613501 | 238 days ago | 0.00261033 xDAI |
Loading...
Loading
Contract Name:
Gelato
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.11; import {LibDiamond} from "./libraries/diamond/standard/LibDiamond.sol"; import {IDiamondLoupe} from "./interfaces/standard/IDiamondLoupe.sol"; import {IDiamondCut} from "./interfaces/standard/IDiamondCut.sol"; import {IERC173} from "./interfaces/standard/IERC173.sol"; import {IERC165} from "./interfaces/standard/IERC165.sol"; contract Gelato { // more arguments are added to this struct // this avoids stack too deep errors struct DiamondArgs { address owner; } constructor( IDiamondCut.FacetCut[] memory _diamondCut, DiamondArgs memory _args ) payable { LibDiamond.diamondCut(_diamondCut, address(0), new bytes(0)); LibDiamond.setContractOwner(_args.owner); LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); // adding ERC165 data ds.supportedInterfaces[type(IERC165).interfaceId] = true; ds.supportedInterfaces[type(IDiamondCut).interfaceId] = true; ds.supportedInterfaces[type(IDiamondLoupe).interfaceId] = true; ds.supportedInterfaces[type(IERC173).interfaceId] = true; } // Find facet for function that is called and execute the // function if a facet is found and return any value. // solhint-disable-next-line no-complex-fallback fallback() external payable { LibDiamond.DiamondStorage storage ds; bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION; assembly { ds.slot := position } address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress; require(facet != address(0), "Gelato: Function does not exist"); assembly { calldatacopy(0, 0, calldatasize()) let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0) returndatacopy(0, 0, returndatasize()) switch result case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } // solhint-disable-next-line no-empty-blocks, ordering receive() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity 0.8.11; /******************************************************************************\ * Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) * EIP-2535 Diamond Standard: https://eips.ethereum.org/EIPS/eip-2535 /******************************************************************************/ interface IDiamondCut { enum FacetCutAction { Add, Replace, Remove } // Add=0, Replace=1, Remove=2 struct FacetCut { address facetAddress; FacetCutAction action; bytes4[] functionSelectors; } event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata); /// @notice Add/replace/remove any number of functions and optionally execute /// a function with delegatecall /// @param _diamondCut Contains the facet addresses and function selectors /// @param _init The address of the contract or facet to execute _calldata /// @param _calldata A function call, including function selector and arguments /// _calldata is executed with delegatecall on _init function diamondCut( FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata ) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.11; /******************************************************************************\ * Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) * EIP-2535 Diamond Standard: https://eips.ethereum.org/EIPS/eip-2535 /******************************************************************************/ // A loupe is a small magnifying glass used to look at diamonds. // These functions look at diamonds interface IDiamondLoupe { /// These functions are expected to be called frequently /// by tools. struct Facet { address facetAddress; bytes4[] functionSelectors; } /// @notice Gets all facet addresses and their four byte function selectors. /// @return facets_ Facet function facets() external view returns (Facet[] memory facets_); /// @notice Gets all the function selectors supported by a specific facet. /// @param _facet The facet address. /// @return facetFunctionSelectors_ function facetFunctionSelectors(address _facet) external view returns (bytes4[] memory facetFunctionSelectors_); /// @notice Get all the facet addresses used by a diamond. /// @return facetAddresses_ function facetAddresses() external view returns (address[] memory facetAddresses_); /// @notice Gets the facet that supports the given selector. /// @dev If facet is not found return address(0). /// @param _functionSelector The function selector. /// @return facetAddress_ The facet address. function facetAddress(bytes4 _functionSelector) external view returns (address facetAddress_); }
// SPDX-License-Identifier: MIT pragma solidity 0.8.11; interface IERC165 { /// @notice Query if a contract implements an interface /// @param interfaceId The interface identifier, as specified in ERC-165 /// @dev Interface identification is specified in ERC-165. This function /// uses less than 30,000 gas. /// @return `true` if the contract implements `interfaceID` and /// `interfaceID` is not 0xffffffff, `false` otherwise function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity 0.8.11; /// @title ERC-173 Contract Ownership Standard /// Note: the ERC-165 identifier for this interface is 0x7f5828d0 /* is ERC165 */ interface IERC173 { /// @dev This emits when ownership of a contract changes. event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /// @notice Set the address of the new owner of the contract /// @dev Set _newOwner to address(0) to renounce any ownership. /// @param _newOwner The address of the new owner of the contract function transferOwnership(address _newOwner) external; /// @notice Get the address of the owner /// @return owner_ The address of the owner. function owner() external view returns (address owner_); }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.11; library GelatoBytes { function calldataSliceSelector(bytes calldata _bytes) internal pure returns (bytes4 selector) { selector = _bytes[0] | (bytes4(_bytes[1]) >> 8) | (bytes4(_bytes[2]) >> 16) | (bytes4(_bytes[3]) >> 24); } function memorySliceSelector(bytes memory _bytes) internal pure returns (bytes4 selector) { selector = _bytes[0] | (bytes4(_bytes[1]) >> 8) | (bytes4(_bytes[2]) >> 16) | (bytes4(_bytes[3]) >> 24); } function revertWithError(bytes memory _bytes, string memory _tracingInfo) internal pure { // 68: 32-location, 32-length, 4-ErrorSelector, UTF-8 err if (_bytes.length % 32 == 4) { bytes4 selector; assembly { selector := mload(add(0x20, _bytes)) } if (selector == 0x08c379a0) { // Function selector for Error(string) assembly { _bytes := add(_bytes, 68) } revert(string(abi.encodePacked(_tracingInfo, string(_bytes)))); } else { revert( string(abi.encodePacked(_tracingInfo, "NoErrorSelector")) ); } } else { revert( string(abi.encodePacked(_tracingInfo, "UnexpectedReturndata")) ); } } function returnError(bytes memory _bytes, string memory _tracingInfo) internal pure returns (string memory) { // 68: 32-location, 32-length, 4-ErrorSelector, UTF-8 err if (_bytes.length % 32 == 4) { bytes4 selector; assembly { selector := mload(add(0x20, _bytes)) } if (selector == 0x08c379a0) { // Function selector for Error(string) assembly { _bytes := add(_bytes, 68) } return string(abi.encodePacked(_tracingInfo, string(_bytes))); } else { return string(abi.encodePacked(_tracingInfo, "NoErrorSelector")); } } else { return string(abi.encodePacked(_tracingInfo, "UnexpectedReturndata")); } } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.11; // https://github.com/mudgen/diamond-3/blob/b009cd08b7822bad727bbcc47aa1b50d8b50f7f0/contracts/libraries/LibDiamond.sol#L1 /******************************************************************************\ * Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) * EIP-2535 Diamond Standard: https://eips.ethereum.org/EIPS/eip-2535 /******************************************************************************/ import "../../../interfaces/standard/IDiamondCut.sol"; // Custom due to incorrect string casting (non UTF-8 formatted) import {GelatoBytes} from "../../GelatoBytes.sol"; library LibDiamond { bytes32 constant DIAMOND_STORAGE_POSITION = keccak256("diamond.standard.diamond.storage"); struct FacetAddressAndPosition { address facetAddress; uint16 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array } struct FacetFunctionSelectors { bytes4[] functionSelectors; uint16 facetAddressPosition; // position of facetAddress in facetAddresses array } struct DiamondStorage { // maps function selector to the facet address and // the position of the selector in the facetFunctionSelectors.selectors array mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition; // maps facet addresses to function selectors mapping(address => FacetFunctionSelectors) facetFunctionSelectors; // facet addresses address[] facetAddresses; // Used to query if a contract implements an interface. // Used to implement ERC-165. mapping(bytes4 => bool) supportedInterfaces; // owner of the contract address contractOwner; } function diamondStorage() internal pure returns (DiamondStorage storage ds) { bytes32 position = DIAMOND_STORAGE_POSITION; assembly { ds.slot := position } } event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); function setContractOwner(address _newOwner) internal { DiamondStorage storage ds = diamondStorage(); address previousOwner = ds.contractOwner; ds.contractOwner = _newOwner; emit OwnershipTransferred(previousOwner, _newOwner); } function contractOwner() internal view returns (address contractOwner_) { contractOwner_ = diamondStorage().contractOwner; } function isContractOwner(address _guy) internal view returns (bool) { return _guy == contractOwner(); } function enforceIsContractOwner() internal view { require( msg.sender == diamondStorage().contractOwner, "LibDiamond: Must be contract owner" ); } event DiamondCut( IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata ); // Internal function version of diamondCut function diamondCut( IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata ) internal { for ( uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++ ) { IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action; if (action == IDiamondCut.FacetCutAction.Add) { addFunctions( _diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors ); } else if (action == IDiamondCut.FacetCutAction.Replace) { replaceFunctions( _diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors ); } else if (action == IDiamondCut.FacetCutAction.Remove) { removeFunctions( _diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors ); } else { revert("LibDiamondCut: Incorrect FacetCutAction"); } } emit DiamondCut(_diamondCut, _init, _calldata); initializeDiamondCut(_init, _calldata); } function addFunctions( address _facetAddress, bytes4[] memory _functionSelectors ) internal { require( _functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut" ); DiamondStorage storage ds = diamondStorage(); // uint16 selectorCount = uint16(diamondStorage().selectors.length); require( _facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)" ); uint16 selectorPosition = uint16( ds.facetFunctionSelectors[_facetAddress].functionSelectors.length ); // add new facet address if it does not exist if (selectorPosition == 0) { enforceHasContractCode( _facetAddress, "LibDiamondCut: New facet has no code" ); ds .facetFunctionSelectors[_facetAddress] .facetAddressPosition = uint16(ds.facetAddresses.length); ds.facetAddresses.push(_facetAddress); } for ( uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++ ) { bytes4 selector = _functionSelectors[selectorIndex]; address oldFacetAddress = ds .selectorToFacetAndPosition[selector] .facetAddress; require( oldFacetAddress == address(0), "LibDiamondCut: Can't add function that already exists" ); ds.facetFunctionSelectors[_facetAddress].functionSelectors.push( selector ); ds .selectorToFacetAndPosition[selector] .facetAddress = _facetAddress; ds .selectorToFacetAndPosition[selector] .functionSelectorPosition = selectorPosition; selectorPosition++; } } function replaceFunctions( address _facetAddress, bytes4[] memory _functionSelectors ) internal { require( _functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut" ); DiamondStorage storage ds = diamondStorage(); require( _facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)" ); uint16 selectorPosition = uint16( ds.facetFunctionSelectors[_facetAddress].functionSelectors.length ); // add new facet address if it does not exist if (selectorPosition == 0) { enforceHasContractCode( _facetAddress, "LibDiamondCut: New facet has no code" ); ds .facetFunctionSelectors[_facetAddress] .facetAddressPosition = uint16(ds.facetAddresses.length); ds.facetAddresses.push(_facetAddress); } for ( uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++ ) { bytes4 selector = _functionSelectors[selectorIndex]; address oldFacetAddress = ds .selectorToFacetAndPosition[selector] .facetAddress; require( oldFacetAddress != _facetAddress, "LibDiamondCut: Can't replace function with same function" ); removeFunction(oldFacetAddress, selector); // add function ds .selectorToFacetAndPosition[selector] .functionSelectorPosition = selectorPosition; ds.facetFunctionSelectors[_facetAddress].functionSelectors.push( selector ); ds .selectorToFacetAndPosition[selector] .facetAddress = _facetAddress; selectorPosition++; } } function removeFunctions( address _facetAddress, bytes4[] memory _functionSelectors ) internal { require( _functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut" ); DiamondStorage storage ds = diamondStorage(); // if function does not exist then do nothing and return require( _facetAddress == address(0), "LibDiamondCut: Remove facet address must be address(0)" ); for ( uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++ ) { bytes4 selector = _functionSelectors[selectorIndex]; address oldFacetAddress = ds .selectorToFacetAndPosition[selector] .facetAddress; removeFunction(oldFacetAddress, selector); } } function removeFunction(address _facetAddress, bytes4 _selector) internal { DiamondStorage storage ds = diamondStorage(); require( _facetAddress != address(0), "LibDiamondCut: Can't remove function that doesn't exist" ); // an immutable function is a function defined directly in a diamond require( _facetAddress != address(this), "LibDiamondCut: Can't remove immutable function" ); // replace selector with last selector, then delete last selector uint256 selectorPosition = ds .selectorToFacetAndPosition[_selector] .functionSelectorPosition; uint256 lastSelectorPosition = ds .facetFunctionSelectors[_facetAddress] .functionSelectors .length - 1; // if not the same then replace _selector with lastSelector if (selectorPosition != lastSelectorPosition) { bytes4 lastSelector = ds .facetFunctionSelectors[_facetAddress] .functionSelectors[lastSelectorPosition]; ds.facetFunctionSelectors[_facetAddress].functionSelectors[ selectorPosition ] = lastSelector; ds .selectorToFacetAndPosition[lastSelector] .functionSelectorPosition = uint16(selectorPosition); } // delete the last selector ds.facetFunctionSelectors[_facetAddress].functionSelectors.pop(); delete ds.selectorToFacetAndPosition[_selector]; // if no more selectors for facet address then delete the facet address if (lastSelectorPosition == 0) { // replace facet address with last facet address and delete last facet address uint256 lastFacetAddressPosition = ds.facetAddresses.length - 1; uint256 facetAddressPosition = ds .facetFunctionSelectors[_facetAddress] .facetAddressPosition; if (facetAddressPosition != lastFacetAddressPosition) { address lastFacetAddress = ds.facetAddresses[ lastFacetAddressPosition ]; ds.facetAddresses[facetAddressPosition] = lastFacetAddress; ds .facetFunctionSelectors[lastFacetAddress] .facetAddressPosition = uint16(facetAddressPosition); } ds.facetAddresses.pop(); delete ds .facetFunctionSelectors[_facetAddress] .facetAddressPosition; } } function initializeDiamondCut(address _init, bytes memory _calldata) internal { if (_init == address(0)) { require( _calldata.length == 0, "LibDiamondCut: _init is address(0) but_calldata is not empty" ); } else { require( _calldata.length > 0, "LibDiamondCut: _calldata is empty but _init is not address(0)" ); if (_init != address(this)) { enforceHasContractCode( _init, "LibDiamondCut: _init address has no code" ); } (bool success, bytes memory error) = _init.delegatecall(_calldata); if (!success) { if (error.length > 0) { // bubble up the error GelatoBytes.revertWithError(error, "LibDiamondCut:_init:"); } else { revert("LibDiamondCut: _init function reverted"); } } } } function enforceHasContractCode( address _contract, string memory _errorMessage ) internal view { uint256 contractSize; assembly { contractSize := extcodesize(_contract) } require(contractSize > 0, _errorMessage); } }
{ "evmVersion": "london", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 200 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"components":[{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct Gelato.DiamondArgs","name":"_args","type":"tuple"}],"stateMutability":"payable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260405162002d2638038062002d26833981016040819052620000269162001365565b604080516000808252602082019092526200004e918491620000f560201b620000c81760201c565b6200006881600001516200035360201b620002dc1760201c565b60006200007f620003d760201b6200033c1760201c565b6301ffc9a760e01b600090815260039091016020526040808220805460ff1990811660019081179092556307e4c70760e21b845282842080548216831790556348e2b09360e01b845282842080548216831790556307f5828d60e41b845291909220805490911690911790555062001830915050565b60005b8351811015620003045760008482815181106200011957620001196200150f565b6020026020010151602001519050600060028111156200013d576200013d62001525565b81600281111562000152576200015262001525565b1415620001b157620001ab8583815181106200017257620001726200150f565b6020026020010151600001518684815181106200019357620001936200150f565b602002602001015160400151620003ea60201b60201c565b620002ee565b6001816002811115620001c857620001c862001525565b14156200022157620001ab858381518110620001e857620001e86200150f565b6020026020010151600001518684815181106200020957620002096200150f565b602002602001015160400151620006d260201b60201c565b600281600281111562000238576200023862001525565b14156200029157620001ab8583815181106200025857620002586200150f565b6020026020010151600001518684815181106200027957620002796200150f565b602002602001015160400151620009d760201b60201c565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b60648201526084015b60405180910390fd5b5080620002fb8162001551565b915050620000f8565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516200033a93929190620015cc565b60405180910390a16200034e828262000b3c565b505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080546001600160a01b031981166001600160a01b0384811691821790935560405160008051602062002c7a833981519152939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60008051602062002c7a83398151915290565b6000815111620004405760405162461bcd60e51b815260206004820152602b602482015260008051602062002d0683398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620002e5565b60008051602062002c7a8339815191526001600160a01b038316620004ac5760405162461bcd60e51b815260206004820152602c602482015260008051602062002cc283398151915260448201526b65206164647265737328302960a01b6064820152608401620002e5565b6001600160a01b038316600090815260018201602052604090205461ffff81166200055257620004f68460405180606001604052806024815260200162002ce26024913962000d91565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b8351811015620006cb5760008482815181106200057657620005766200150f565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156200061e5760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c72656164792065786973747300000000000000000000006064820152608401620002e5565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160b01b031916909117600160a01b61ffff87160217905583620006b081620016d3565b94505050508080620006c29062001551565b91505062000555565b5050505050565b6000815111620007285760405162461bcd60e51b815260206004820152602b602482015260008051602062002d0683398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620002e5565b60008051602062002c7a8339815191526001600160a01b038316620007945760405162461bcd60e51b815260206004820152602c602482015260008051602062002cc283398151915260448201526b65206164647265737328302960a01b6064820152608401620002e5565b6001600160a01b038316600090815260018201602052604090205461ffff81166200083a57620007de8460405180606001604052806024815260200162002ce26024913962000d91565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b8351811015620006cb5760008482815181106200085e576200085e6200150f565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168114156200090c5760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e00000000000000006064820152608401620002e5565b62000918818362000db5565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b03191617905583620009bc81620016d3565b94505050508080620009ce9062001551565b9150506200083d565b600081511162000a2d5760405162461bcd60e51b815260206004820152602b602482015260008051602062002d0683398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620002e5565b60008051602062002c7a8339815191526001600160a01b0383161562000abc5760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d7573742062652061646472657373283029000000000000000000006064820152608401620002e5565b60005b825181101562000b3657600083828151811062000ae05762000ae06200150f565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031662000b1e818362000db5565b5050808062000b2d9062001551565b91505062000abf565b50505050565b6001600160a01b03821662000bc65780511562000bc25760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d707479000000006064820152608401620002e5565b5050565b600081511162000c3f5760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f7420616464726573732830290000006064820152608401620002e5565b6001600160a01b038216301462000c755762000c758260405180606001604052806028815260200162002c9a6028913962000d91565b600080836001600160a01b03168360405162000c929190620016f8565b600060405180830381855af49150503d806000811462000ccf576040519150601f19603f3d011682016040523d82523d6000602084013e62000cd4565b606091505b50915091508162000b365780511562000d395762000d33816040518060400160405280601481526020017f4c69624469616d6f6e644375743a5f696e69743a000000000000000000000000815250620011bd60201b620003601760201c565b62000b36565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b6064820152608401620002e5565b813b818162000b365760405162461bcd60e51b8152600401620002e5919062001716565b60008051602062002c7a8339815191526001600160a01b03831662000e435760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e27742065786973740000000000000000006064820152608401620002e5565b6001600160a01b03831630141562000eb55760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b6064820152608401620002e5565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff16929162000f019162001732565b905080821462000ff4576001600160a01b0385166000908152600184016020526040812080548390811062000f3a5762000f3a6200150f565b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b92508291908590811062000f8e5762000f8e6200150f565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b038516600090815260018401602052604090208054806200102057620010206200174c565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040902080546001600160b01b031916905580620006cb5760028301546000906200108f9060019062001732565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff1680821462001155576000856002018381548110620010d657620010d66200150f565b6000918252602090912001546002870180546001600160a01b0390921692508291849081106200110a576200110a6200150f565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b846002018054806200116b576200116b6200174c565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b60208251620011cd919062001762565b600414156200124a57602082015162461bcd60e51b6001600160e01b031982161415620012375760448301925081836040516020016200120f92919062001785565b60408051601f198184030181529082905262461bcd60e51b8252620002e59160040162001716565b816040516020016200120f9190620017b8565b806040516020016200120f9190620017ed565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156200129857620012986200125d565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620012c957620012c96200125d565b604052919050565b60006001600160401b03821115620012ed57620012ed6200125d565b5060051b60200190565b80516001600160a01b03811681146200130f57600080fd5b919050565b6000602082840312156200132757600080fd5b604051602081016001600160401b03811182821017156200134c576200134c6200125d565b6040529050806200135d83620012f7565b905292915050565b600080604083850312156200137957600080fd5b82516001600160401b03808211156200139157600080fd5b818501915085601f830112620013a657600080fd5b81516020620013bf620013b983620012d1565b6200129e565b82815260059290921b84018101918181019089841115620013df57600080fd5b8286015b84811015620014ef57805186811115620013fc57600080fd5b87016060818d03601f190112156200141357600080fd5b6200141d62001273565b6200142a868301620012f7565b81526040820151600381106200143f57600080fd5b818701526060820151888111156200145657600080fd5b8083019250508c603f8301126200146c57600080fd5b858201516200147f620013b982620012d1565b81815260059190911b830160400190878101908f831115620014a057600080fd5b6040850194505b82851015620014d95784516001600160e01b031981168114620014c957600080fd5b82529388019390880190620014a7565b60408401525050845250918301918301620013e3565b5096506200150290508888830162001314565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156200156857620015686200153b565b5060010190565b60005b838110156200158c57818101518382015260200162001572565b8381111562000b365750506000910152565b60008151808452620015b88160208601602086016200156f565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b84811015620016a157898403607f19018652815180516001600160a01b031685528381015189860190600381106200163d57634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156200168b5783516001600160e01b03191682529286019260019290920191908601906200165f565b50978501979550505090820190600101620015f5565b50506001600160a01b038a16908801528681036040880152620016c581896200159e565b9a9950505050505050505050565b600061ffff80831681811415620016ee57620016ee6200153b565b6001019392505050565b600082516200170c8184602087016200156f565b9190910192915050565b6020815260006200172b60208301846200159e565b9392505050565b6000828210156200174757620017476200153b565b500390565b634e487b7160e01b600052603160045260246000fd5b6000826200178057634e487b7160e01b600052601260045260246000fd5b500690565b60008351620017998184602088016200156f565b835190830190620017af8183602088016200156f565b01949350505050565b60008251620017cc8184602087016200156f565b6e2737a2b93937b929b2b632b1ba37b960891b920191825250600f01919050565b60008251620018018184602087016200156f565b7f556e657870656374656452657475726e64617461000000000000000000000000920191825250601401919050565b61143a80620018406000396000f3fe60806040523661000b57005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602081905260409091205481906001600160a01b0316806100a45760405162461bcd60e51b815260206004820152601f60248201527f47656c61746f3a2046756e6374696f6e20646f6573206e6f742065786973740060448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100c3573d6000f35b3d6000fd5b60005b83518110156102915760008482815181106100e8576100e861102b565b60200260200101516020015190506000600281111561010957610109611041565b81600281111561011b5761011b611041565b141561016a576101658583815181106101365761013661102b565b6020026020010151600001518684815181106101545761015461102b565b6020026020010151604001516103f4565b61027e565b600181600281111561017e5761017e611041565b14156101c8576101658583815181106101995761019961102b565b6020026020010151600001518684815181106101b7576101b761102b565b602002602001015160400151610656565b60028160028111156101dc576101dc611041565b1415610226576101658583815181106101f7576101f761102b565b6020026020010151600001518684815181106102155761021561102b565b6020026020010151604001516108db565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b606482015260840161009b565b50806102898161106d565b9150506100cb565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516102c5939291906110e0565b60405180910390a16102d782826109f5565b505050565b60006102e661033c565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b6020825161036e91906111e0565b600414156103e357602082015162461bcd60e51b6001600160e01b0319821614156103d25760448301925081836040516020016103ac929190611202565b60408051601f198184030181529082905262461bcd60e51b825261009b91600401611231565b816040516020016103ac919061124b565b806040516020016103ac919061127e565b60008151116104155760405162461bcd60e51b815260040161009b906112b6565b600061041f61033c565b90506001600160a01b0383166104475760405162461bcd60e51b815260040161009b90611301565b6001600160a01b038316600090815260018201602052604090205461ffff81166104e95761048d846040518060600160405280602481526020016113e160249139610c23565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561064f5760008482815181106105095761050961102b565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156105a75760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6044820152746e207468617420616c72656164792065786973747360581b606482015260840161009b565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160b01b031916909117600160a01b61ffff871602179055836106378161134d565b945050505080806106479061106d565b9150506104ec565b5050505050565b60008151116106775760405162461bcd60e51b815260040161009b906112b6565b600061068161033c565b90506001600160a01b0383166106a95760405162461bcd60e51b815260040161009b90611301565b6001600160a01b038316600090815260018201602052604090205461ffff811661074b576106ef846040518060600160405280602481526020016113e160249139610c23565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561064f57600084828151811061076b5761076b61102b565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168114156108175760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606482015260840161009b565b6108218183610c44565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b031916179055836108c38161134d565b945050505080806108d39061106d565b91505061074e565b60008151116108fc5760405162461bcd60e51b815260040161009b906112b6565b600061090661033c565b90506001600160a01b0383161561097e5760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604482015275657373206d757374206265206164647265737328302960501b606482015260840161009b565b60005b82518110156109ef57600083828151811061099e5761099e61102b565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b03166109da8183610c44565b505080806109e79061106d565b915050610981565b50505050565b6001600160a01b038216610a7c57805115610a785760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606482015260840161009b565b5050565b6000815111610af35760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606482015260840161009b565b6001600160a01b0382163014610b2557610b25826040518060600160405280602881526020016113b960289139610c23565b600080836001600160a01b031683604051610b40919061136f565b600060405180830381855af49150503d8060008114610b7b576040519150601f19603f3d011682016040523d82523d6000602084013e610b80565b606091505b5091509150816109ef57805115610bcc57610bc781604051806040016040528060148152602001732634b12234b0b6b7b73221baba1d2fb4b734ba1d60611b815250610360565b6109ef565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b606482015260840161009b565b813b81816109ef5760405162461bcd60e51b815260040161009b9190611231565b6000610c4e61033c565b90506001600160a01b038316610ccc5760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606482015260840161009b565b6001600160a01b038316301415610d3c5760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b606482015260840161009b565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff169291610d869161138b565b9050808214610e72576001600160a01b03851660009081526001840160205260408120805483908110610dbb57610dbb61102b565b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b925082919085908110610e0c57610e0c61102b565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b03851660009081526001840160205260409020805480610e9b57610e9b6113a2565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040902080546001600160b01b03191690558061064f576002830154600090610f079060019061138b565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff16808214610fc6576000856002018381548110610f4a57610f4a61102b565b6000918252602090912001546002870180546001600160a01b039092169250829184908110610f7b57610f7b61102b565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b84600201805480610fd957610fd96113a2565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561108157611081611057565b5060010190565b60005b838110156110a357818101518382015260200161108b565b838111156109ef5750506000910152565b600081518084526110cc816020860160208601611088565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156111b057898403607f19018652815180516001600160a01b0316855283810151898601906003811061114f57634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b8083101561119b5783516001600160e01b0319168252928601926001929092019190860190611171565b50978501979550505090820190600101611109565b50506001600160a01b038a169088015286810360408801526111d281896110b4565b9a9950505050505050505050565b6000826111fd57634e487b7160e01b600052601260045260246000fd5b500690565b60008351611214818460208801611088565b835190830190611228818360208801611088565b01949350505050565b60208152600061124460208301846110b4565b9392505050565b6000825161125d818460208701611088565b6e2737a2b93937b929b2b632b1ba37b960891b920191825250600f01919050565b60008251611290818460208701611088565b73556e657870656374656452657475726e6461746160601b920191825250601401919050565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b600061ffff8083168181141561136557611365611057565b6001019392505050565b60008251611381818460208701611088565b9190910192915050565b60008282101561139d5761139d611057565b500390565b634e487b7160e01b600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220a8cb0a1bff46b88b3554c2ab3fa540b1dbf3f069c4bb2682ac76cb6781c395c064736f6c634300080b0033c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204164642066616365742063616e277420624c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f64654c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206600000000000000000000000000000000000000000000000000000000000000400000000000000000000000006a0a93cd6d6fb7a36bf6234ef4650bf9474e7682000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000000056000000000000000000000000000000000000000000000000000000000000006000000000000000000000000007598e84b2e114ab62cab288ce5f7d5f6bad35bba0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c000000000000000000000000000000000000000000000000000000000000000000000000000000004775af8fef4809fe10bf05867d2b038a4b5b2146000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000000000000000000000000000003bae1bf6a43b7843ad2858f0c6eed3def09607920000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b000000000000000000000000000000000000000000000000000000000000000000000000000000002625afbb3e63f885bc4de0f289571d81cf228b0c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002da44c84e00000000000000000000000000000000000000000000000000000000a4d0c0a90000000000000000000000000000000000000000000000000000000000000000000000000000000033faf125fc531a99cd764129bd2769a7e4c4daa90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000061ecd9cd800000000000000000000000000000000000000000000000000000000afda35cb00000000000000000000000000000000000000000000000000000000e52e63c500000000000000000000000000000000000000000000000000000000debfda30000000000000000000000000000000000000000000000000000000001499e05b00000000000000000000000000000000000000000000000000000000dc09c3e4000000000000000000000000000000000000000000000000000000000000000000000000000000004796aa36fa6f47aad2b8db51c9a30859dd07acc9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001b87b0b4c000000000000000000000000000000000000000000000000000000000000000000000000000000007c5c4af1618220c090a6863175de47afb20fa9df000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001beabacc800000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040523661000b57005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602081905260409091205481906001600160a01b0316806100a45760405162461bcd60e51b815260206004820152601f60248201527f47656c61746f3a2046756e6374696f6e20646f6573206e6f742065786973740060448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100c3573d6000f35b3d6000fd5b60005b83518110156102915760008482815181106100e8576100e861102b565b60200260200101516020015190506000600281111561010957610109611041565b81600281111561011b5761011b611041565b141561016a576101658583815181106101365761013661102b565b6020026020010151600001518684815181106101545761015461102b565b6020026020010151604001516103f4565b61027e565b600181600281111561017e5761017e611041565b14156101c8576101658583815181106101995761019961102b565b6020026020010151600001518684815181106101b7576101b761102b565b602002602001015160400151610656565b60028160028111156101dc576101dc611041565b1415610226576101658583815181106101f7576101f761102b565b6020026020010151600001518684815181106102155761021561102b565b6020026020010151604001516108db565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b606482015260840161009b565b50806102898161106d565b9150506100cb565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516102c5939291906110e0565b60405180910390a16102d782826109f5565b505050565b60006102e661033c565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b6020825161036e91906111e0565b600414156103e357602082015162461bcd60e51b6001600160e01b0319821614156103d25760448301925081836040516020016103ac929190611202565b60408051601f198184030181529082905262461bcd60e51b825261009b91600401611231565b816040516020016103ac919061124b565b806040516020016103ac919061127e565b60008151116104155760405162461bcd60e51b815260040161009b906112b6565b600061041f61033c565b90506001600160a01b0383166104475760405162461bcd60e51b815260040161009b90611301565b6001600160a01b038316600090815260018201602052604090205461ffff81166104e95761048d846040518060600160405280602481526020016113e160249139610c23565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561064f5760008482815181106105095761050961102b565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156105a75760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6044820152746e207468617420616c72656164792065786973747360581b606482015260840161009b565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160b01b031916909117600160a01b61ffff871602179055836106378161134d565b945050505080806106479061106d565b9150506104ec565b5050505050565b60008151116106775760405162461bcd60e51b815260040161009b906112b6565b600061068161033c565b90506001600160a01b0383166106a95760405162461bcd60e51b815260040161009b90611301565b6001600160a01b038316600090815260018201602052604090205461ffff811661074b576106ef846040518060600160405280602481526020016113e160249139610c23565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561064f57600084828151811061076b5761076b61102b565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168114156108175760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606482015260840161009b565b6108218183610c44565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b031916179055836108c38161134d565b945050505080806108d39061106d565b91505061074e565b60008151116108fc5760405162461bcd60e51b815260040161009b906112b6565b600061090661033c565b90506001600160a01b0383161561097e5760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604482015275657373206d757374206265206164647265737328302960501b606482015260840161009b565b60005b82518110156109ef57600083828151811061099e5761099e61102b565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b03166109da8183610c44565b505080806109e79061106d565b915050610981565b50505050565b6001600160a01b038216610a7c57805115610a785760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606482015260840161009b565b5050565b6000815111610af35760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606482015260840161009b565b6001600160a01b0382163014610b2557610b25826040518060600160405280602881526020016113b960289139610c23565b600080836001600160a01b031683604051610b40919061136f565b600060405180830381855af49150503d8060008114610b7b576040519150601f19603f3d011682016040523d82523d6000602084013e610b80565b606091505b5091509150816109ef57805115610bcc57610bc781604051806040016040528060148152602001732634b12234b0b6b7b73221baba1d2fb4b734ba1d60611b815250610360565b6109ef565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b606482015260840161009b565b813b81816109ef5760405162461bcd60e51b815260040161009b9190611231565b6000610c4e61033c565b90506001600160a01b038316610ccc5760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606482015260840161009b565b6001600160a01b038316301415610d3c5760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b606482015260840161009b565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff169291610d869161138b565b9050808214610e72576001600160a01b03851660009081526001840160205260408120805483908110610dbb57610dbb61102b565b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b925082919085908110610e0c57610e0c61102b565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b03851660009081526001840160205260409020805480610e9b57610e9b6113a2565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040902080546001600160b01b03191690558061064f576002830154600090610f079060019061138b565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff16808214610fc6576000856002018381548110610f4a57610f4a61102b565b6000918252602090912001546002870180546001600160a01b039092169250829184908110610f7b57610f7b61102b565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b84600201805480610fd957610fd96113a2565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561108157611081611057565b5060010190565b60005b838110156110a357818101518382015260200161108b565b838111156109ef5750506000910152565b600081518084526110cc816020860160208601611088565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156111b057898403607f19018652815180516001600160a01b0316855283810151898601906003811061114f57634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b8083101561119b5783516001600160e01b0319168252928601926001929092019190860190611171565b50978501979550505090820190600101611109565b50506001600160a01b038a169088015286810360408801526111d281896110b4565b9a9950505050505050505050565b6000826111fd57634e487b7160e01b600052601260045260246000fd5b500690565b60008351611214818460208801611088565b835190830190611228818360208801611088565b01949350505050565b60208152600061124460208301846110b4565b9392505050565b6000825161125d818460208701611088565b6e2737a2b93937b929b2b632b1ba37b960891b920191825250600f01919050565b60008251611290818460208701611088565b73556e657870656374656452657475726e6461746160601b920191825250601401919050565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b600061ffff8083168181141561136557611365611057565b6001019392505050565b60008251611381818460208701611088565b9190910192915050565b60008282101561139d5761139d611057565b500390565b634e487b7160e01b600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220a8cb0a1bff46b88b3554c2ab3fa540b1dbf3f069c4bb2682ac76cb6781c395c064736f6c634300080b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000400000000000000000000000006a0a93cd6d6fb7a36bf6234ef4650bf9474e7682000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000000056000000000000000000000000000000000000000000000000000000000000006000000000000000000000000007598e84b2e114ab62cab288ce5f7d5f6bad35bba0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c000000000000000000000000000000000000000000000000000000000000000000000000000000004775af8fef4809fe10bf05867d2b038a4b5b2146000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000000000000000000000000000003bae1bf6a43b7843ad2858f0c6eed3def09607920000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b000000000000000000000000000000000000000000000000000000000000000000000000000000002625afbb3e63f885bc4de0f289571d81cf228b0c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002da44c84e00000000000000000000000000000000000000000000000000000000a4d0c0a90000000000000000000000000000000000000000000000000000000000000000000000000000000033faf125fc531a99cd764129bd2769a7e4c4daa90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000061ecd9cd800000000000000000000000000000000000000000000000000000000afda35cb00000000000000000000000000000000000000000000000000000000e52e63c500000000000000000000000000000000000000000000000000000000debfda30000000000000000000000000000000000000000000000000000000001499e05b00000000000000000000000000000000000000000000000000000000dc09c3e4000000000000000000000000000000000000000000000000000000000000000000000000000000004796aa36fa6f47aad2b8db51c9a30859dd07acc9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001b87b0b4c000000000000000000000000000000000000000000000000000000000000000000000000000000007c5c4af1618220c090a6863175de47afb20fa9df000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001beabacc800000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _diamondCut (tuple[]): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput],System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput],System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput],System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput],System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput],System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput],System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [1] : _args (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
-----Encoded View---------------
56 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000006a0a93cd6d6fb7a36bf6234ef4650bf9474e7682
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [5] : 00000000000000000000000000000000000000000000000000000000000002a0
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000360
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000420
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000560
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000600
Arg [10] : 0000000000000000000000007598e84b2e114ab62cab288ce5f7d5f6bad35bba
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [14] : 1f931c1c00000000000000000000000000000000000000000000000000000000
Arg [15] : 0000000000000000000000004775af8fef4809fe10bf05867d2b038a4b5b2146
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [18] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [19] : cdffacc600000000000000000000000000000000000000000000000000000000
Arg [20] : 52ef6b2c00000000000000000000000000000000000000000000000000000000
Arg [21] : adfca15e00000000000000000000000000000000000000000000000000000000
Arg [22] : 7a0ed62700000000000000000000000000000000000000000000000000000000
Arg [23] : 01ffc9a700000000000000000000000000000000000000000000000000000000
Arg [24] : 0000000000000000000000003bae1bf6a43b7843ad2858f0c6eed3def0960792
Arg [25] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [26] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [27] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [28] : 8da5cb5b00000000000000000000000000000000000000000000000000000000
Arg [29] : f2fde38b00000000000000000000000000000000000000000000000000000000
Arg [30] : 0000000000000000000000002625afbb3e63f885bc4de0f289571d81cf228b0c
Arg [31] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [32] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [33] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [34] : da44c84e00000000000000000000000000000000000000000000000000000000
Arg [35] : a4d0c0a900000000000000000000000000000000000000000000000000000000
Arg [36] : 00000000000000000000000033faf125fc531a99cd764129bd2769a7e4c4daa9
Arg [37] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [38] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [39] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [40] : 1ecd9cd800000000000000000000000000000000000000000000000000000000
Arg [41] : afda35cb00000000000000000000000000000000000000000000000000000000
Arg [42] : e52e63c500000000000000000000000000000000000000000000000000000000
Arg [43] : debfda3000000000000000000000000000000000000000000000000000000000
Arg [44] : 1499e05b00000000000000000000000000000000000000000000000000000000
Arg [45] : dc09c3e400000000000000000000000000000000000000000000000000000000
Arg [46] : 0000000000000000000000004796aa36fa6f47aad2b8db51c9a30859dd07acc9
Arg [47] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [48] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [49] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [50] : b87b0b4c00000000000000000000000000000000000000000000000000000000
Arg [51] : 0000000000000000000000007c5c4af1618220c090a6863175de47afb20fa9df
Arg [52] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [53] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [54] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [55] : beabacc800000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
GNO | ![]() | 100.00% | $0.999993 | 4.8544 | $4.85 |
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.