Source Code
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
FPISLockerUtils
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/**
*Submitted for verification at fraxscan.com on 2024-06-16
*/
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.8.0;
// lib/frax-standard-solidity/lib/forge-std/src/console2.sol
/// @dev The original console.sol uses `int` and `uint` for computing function selectors, but it should
/// use `int256` and `uint256`. This modified version fixes that. This version is recommended
/// over `console.sol` if you don't need compatibility with Hardhat as the logs will show up in
/// forge stack traces. If you do need compatibility with Hardhat, you must use `console.sol`.
/// Reference: https://github.com/NomicFoundation/hardhat/issues/2178
library console2 {
address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);
function _castLogPayloadViewToPure(
function(bytes memory) internal view fnIn
) internal pure returns (function(bytes memory) internal pure fnOut) {
assembly {
fnOut := fnIn
}
}
function _sendLogPayload(bytes memory payload) internal pure {
_castLogPayloadViewToPure(_sendLogPayloadView)(payload);
}
function _sendLogPayloadView(bytes memory payload) private view {
uint256 payloadLength = payload.length;
address consoleAddress = CONSOLE_ADDRESS;
/// @solidity memory-safe-assembly
assembly {
let payloadStart := add(payload, 32)
let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)
}
}
function log() internal pure {
_sendLogPayload(abi.encodeWithSignature("log()"));
}
function logInt(int256 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(int256)", p0));
}
function logUint(uint256 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256)", p0));
}
function logString(string memory p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function logBool(bool p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
}
function logAddress(address p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
}
function logBytes(bytes memory p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes)", p0));
}
function logBytes1(bytes1 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0));
}
function logBytes2(bytes2 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0));
}
function logBytes3(bytes3 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0));
}
function logBytes4(bytes4 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0));
}
function logBytes5(bytes5 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0));
}
function logBytes6(bytes6 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0));
}
function logBytes7(bytes7 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0));
}
function logBytes8(bytes8 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0));
}
function logBytes9(bytes9 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0));
}
function logBytes10(bytes10 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0));
}
function logBytes11(bytes11 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0));
}
function logBytes12(bytes12 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0));
}
function logBytes13(bytes13 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0));
}
function logBytes14(bytes14 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0));
}
function logBytes15(bytes15 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0));
}
function logBytes16(bytes16 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0));
}
function logBytes17(bytes17 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0));
}
function logBytes18(bytes18 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0));
}
function logBytes19(bytes19 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0));
}
function logBytes20(bytes20 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0));
}
function logBytes21(bytes21 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0));
}
function logBytes22(bytes22 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0));
}
function logBytes23(bytes23 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0));
}
function logBytes24(bytes24 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0));
}
function logBytes25(bytes25 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0));
}
function logBytes26(bytes26 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0));
}
function logBytes27(bytes27 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0));
}
function logBytes28(bytes28 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0));
}
function logBytes29(bytes29 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0));
}
function logBytes30(bytes30 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0));
}
function logBytes31(bytes31 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0));
}
function logBytes32(bytes32 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0));
}
function log(uint256 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256)", p0));
}
function log(int256 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(int256)", p0));
}
function log(string memory p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function log(bool p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
}
function log(address p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
}
function log(uint256 p0, uint256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256)", p0, p1));
}
function log(uint256 p0, string memory p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string)", p0, p1));
}
function log(uint256 p0, bool p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool)", p0, p1));
}
function log(uint256 p0, address p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address)", p0, p1));
}
function log(string memory p0, uint256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256)", p0, p1));
}
function log(string memory p0, int256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,int256)", p0, p1));
}
function log(string memory p0, string memory p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1));
}
function log(string memory p0, bool p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1));
}
function log(string memory p0, address p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1));
}
function log(bool p0, uint256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256)", p0, p1));
}
function log(bool p0, string memory p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1));
}
function log(bool p0, bool p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1));
}
function log(bool p0, address p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1));
}
function log(address p0, uint256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256)", p0, p1));
}
function log(address p0, string memory p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1));
}
function log(address p0, bool p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1));
}
function log(address p0, address p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1));
}
function log(uint256 p0, uint256 p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256)", p0, p1, p2));
}
function log(uint256 p0, uint256 p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string)", p0, p1, p2));
}
function log(uint256 p0, uint256 p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool)", p0, p1, p2));
}
function log(uint256 p0, uint256 p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address)", p0, p1, p2));
}
function log(uint256 p0, string memory p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256)", p0, p1, p2));
}
function log(uint256 p0, string memory p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string)", p0, p1, p2));
}
function log(uint256 p0, string memory p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool)", p0, p1, p2));
}
function log(uint256 p0, string memory p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address)", p0, p1, p2));
}
function log(uint256 p0, bool p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256)", p0, p1, p2));
}
function log(uint256 p0, bool p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string)", p0, p1, p2));
}
function log(uint256 p0, bool p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool)", p0, p1, p2));
}
function log(uint256 p0, bool p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address)", p0, p1, p2));
}
function log(uint256 p0, address p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256)", p0, p1, p2));
}
function log(uint256 p0, address p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string)", p0, p1, p2));
}
function log(uint256 p0, address p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool)", p0, p1, p2));
}
function log(uint256 p0, address p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address)", p0, p1, p2));
}
function log(string memory p0, uint256 p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256)", p0, p1, p2));
}
function log(string memory p0, uint256 p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string)", p0, p1, p2));
}
function log(string memory p0, uint256 p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool)", p0, p1, p2));
}
function log(string memory p0, uint256 p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address)", p0, p1, p2));
}
function log(string memory p0, string memory p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256)", p0, p1, p2));
}
function log(string memory p0, string memory p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2));
}
function log(string memory p0, string memory p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2));
}
function log(string memory p0, string memory p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2));
}
function log(string memory p0, bool p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256)", p0, p1, p2));
}
function log(string memory p0, bool p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2));
}
function log(string memory p0, bool p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2));
}
function log(string memory p0, bool p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2));
}
function log(string memory p0, address p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256)", p0, p1, p2));
}
function log(string memory p0, address p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2));
}
function log(string memory p0, address p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2));
}
function log(string memory p0, address p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2));
}
function log(bool p0, uint256 p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256)", p0, p1, p2));
}
function log(bool p0, uint256 p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string)", p0, p1, p2));
}
function log(bool p0, uint256 p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool)", p0, p1, p2));
}
function log(bool p0, uint256 p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address)", p0, p1, p2));
}
function log(bool p0, string memory p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256)", p0, p1, p2));
}
function log(bool p0, string memory p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2));
}
function log(bool p0, string memory p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2));
}
function log(bool p0, string memory p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2));
}
function log(bool p0, bool p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256)", p0, p1, p2));
}
function log(bool p0, bool p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2));
}
function log(bool p0, bool p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2));
}
function log(bool p0, bool p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2));
}
function log(bool p0, address p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256)", p0, p1, p2));
}
function log(bool p0, address p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2));
}
function log(bool p0, address p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2));
}
function log(bool p0, address p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2));
}
function log(address p0, uint256 p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256)", p0, p1, p2));
}
function log(address p0, uint256 p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string)", p0, p1, p2));
}
function log(address p0, uint256 p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool)", p0, p1, p2));
}
function log(address p0, uint256 p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address)", p0, p1, p2));
}
function log(address p0, string memory p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256)", p0, p1, p2));
}
function log(address p0, string memory p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2));
}
function log(address p0, string memory p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2));
}
function log(address p0, string memory p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2));
}
function log(address p0, bool p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256)", p0, p1, p2));
}
function log(address p0, bool p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2));
}
function log(address p0, bool p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2));
}
function log(address p0, bool p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2));
}
function log(address p0, address p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256)", p0, p1, p2));
}
function log(address p0, address p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2));
}
function log(address p0, address p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2));
}
function log(address p0, address p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2));
}
function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,string)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,address)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,string)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,address)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,string)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,address)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,string)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,address)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,string)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,address)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,string)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,address)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,string)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,address)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,string)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,address)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,string)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,address)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,string)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,address)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,string)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,address)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,string)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,address)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,string)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,address)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,string)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,address)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,string)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,address)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,string)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,uint256)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,string)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,address)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,uint256)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,string)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,address)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,uint256)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,uint256)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,string)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,uint256)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint256)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint256)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint256)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,uint256)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint256)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint256)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint256)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,uint256)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint256)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint256)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint256)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,uint256)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,string)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,bool)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,address)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,uint256)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,string)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,bool)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,address)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,uint256)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,string)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,address)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,uint256)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,string)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,bool)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,uint256)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint256)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint256)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint256)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,uint256)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint256)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint256)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint256)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,uint256)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint256)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint256)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint256)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3));
}
}
// node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}
// src/contracts/VestedFXS-and-Flox/FPISLocker/IlFPISStructs.sol
// @version 0.2.8
/**
* ====================================================================
* | ______ _______ |
* | / _____________ __ __ / ____(_____ ____ _____ ________ |
* | / /_ / ___/ __ `| |/_/ / /_ / / __ \/ __ `/ __ \/ ___/ _ \ |
* | / __/ / / / /_/ _> < / __/ / / / / / /_/ / / / / /__/ __/ |
* | /_/ /_/ \__,_/_/|_| /_/ /_/_/ /_/\__,_/_/ /_/\___/\___/ |
* | |
* ====================================================================
* ======================== lFPISStructs ==============================
* ====================================================================
* Structs of lFPIS contracts (lFPIS)
* Frax Finance: https://github.com/FraxFinance
*/
interface IlFPISStructs {
/// @notice Detailed lock info for a user
/// @param user Address of the user
/// @param allLocks All of the locks of the user
/// @param numberOfLocks The total number of locks that the user has
/// @param activeLocks Only the active locks of the user
/// @param expiredLocks Only the expired locks of the user
/// @param totalFpis The total amount of FPIS that the user has for all, active, and expired locks respectively
struct DetailedUserLockInfo {
address user;
uint256 numberOfLocks;
LockedBalanceExtended[] allLocks;
LockedBalanceExtended[] activeLocks;
LockedBalanceExtended[] expiredLocks;
int128[3] totalFpis;
}
/// @notice Basic information about a lock
/// @param amount The amount that is locked
/// @param end The ending timestamp for the lock
/// @dev We cannot really do block numbers per se b/c slope is per time, not per block and per block could be fairly bad b/c Ethereum changes blocktimes. What we can do is to extrapolate ***At functions
struct LockedBalance {
int128 amount;
uint128 end; // This should more than suffice for our needs and allows the struct to be packed
}
/// @notice Extended information about a lock
/// @param id The ID of the lock
/// @param index The index of the lock. If index is 0, do not trust it unless isInUse is also true
/// @param amount The amount that is locked
/// @param end The ending timestamp for the lock
struct LockedBalanceExtended {
uint256 id;
uint128 index;
int128 amount;
uint128 end;
}
/// @notice Lock ID Info. Cannot be a simple mapping because lock indeces are in constant flux and index 0 vs null is ambiguous.
/// @param id The ID of the lock
/// @param index The index of the lock. If index is 0, do not trust it unless isInUse is also true
/// @param isInUse If the lock ID is currently in use
struct LockIdIdxInfo {
uint256 id;
uint128 index;
bool isInUse;
}
/// @notice Point in a user's lock
/// @param bias The bias of the point
/// @param slope The slope of the point
/// @param ts The timestamp of the point
/// @param blk The block of the point
/// @param fpisAmt The amount of FPIS at the point
struct Point {
int128 bias;
int128 slope; // - dweight / dt
uint256 ts;
uint256 blk; // block
uint256 fpisAmt;
}
/// @notice Longest lock info for a user
/// @param lock The longest lock of the user
/// @param lockIndex The index of the longest lock
/// @param user The address of the user
struct LongestLock {
LockedBalance lock;
uint128 lockIndex;
address user;
}
}
// node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
// src/contracts/VestedFXS-and-Flox/interfaces/IFPISLocker.sol
// @version 0.2.8
/**
* ====================================================================
* | ______ _______ |
* | / _____________ __ __ / ____(_____ ____ _____ ________ |
* | / /_ / ___/ __ `| |/_/ / /_ / / __ \/ __ `/ __ \/ ___/ _ \ |
* | / __/ / / / /_/ _> < / __/ / / / / / /_/ / / / / /__/ __/ |
* | /_/ /_/ \__,_/_/|_| /_/ /_/_/ /_/\__,_/_/ /_/\___/\___/ |
* | |
* ====================================================================
* ============================ IFPISLocker ============================
* ====================================================================
* Frax Finance: https://github.com/FraxFinance
*/
interface IFPISLocker is IlFPISStructs {
function MAXTIME_INT128() external view returns (int128);
function MAXTIME_UINT256() external view returns (uint256);
function MAX_CONTRIBUTOR_LOCKS() external view returns (uint8);
function MAX_USER_LOCKS() external view returns (uint8);
function MULTIPLIER_UINT256() external view returns (uint256);
function VOTE_WEIGHT_MULTIPLIER_INT128() external view returns (int128);
function VOTE_WEIGHT_MULTIPLIER_UINT256() external view returns (uint256);
function VOTE_END_POWER_BASIS_POINTS_INT128() external view returns (int128);
function VOTE_END_POWER_BASIS_POINTS_UINT256() external view returns (uint256);
function MAX_BASIS_POINTS_INT128() external view returns (int128);
function MAX_BASIS_POINTS_UINT256() external view returns (uint256);
function FXS_CONVERSION_START_TIMESTAMP() external view returns (uint256);
function WEEK_UINT128() external view returns (uint128);
function WEEK_UINT256() external view returns (uint256);
function acceptTransferOwnership() external;
function admin() external view returns (address);
function balanceOf(address _addr) external view returns (uint256 _balance);
function balanceOfAllLocksAtBlock(address _addr, uint256 _block) external view returns (uint256 _balance);
function balanceOfAllLocksAtTime(address _addr, uint256 _timestamp) external view returns (uint256 _balance);
function balanceOfAt(address _addr, uint256 _block) external view returns (uint256 _balance);
function balanceOfOneLockAtBlock(
address _addr,
uint128 _lockIndex,
uint256 _block
) external view returns (uint256 _balance);
function balanceOfOneLockAtTime(
address _addr,
uint128 _lockIndex,
uint256 _timestamp
) external view returns (uint256 _balance);
function checkpoint() external;
function commitTransferOwnership(address _addr) external;
function createLock(address _addr, uint256 _value, uint128 _unlockTime) external returns (uint128);
function decimals() external view returns (uint256);
function depositFor(address _addr, uint256 _value, uint128 _lockIndex) external;
function emergencyUnlockActive() external view returns (bool);
function epoch() external view returns (uint256);
function findBlockEpoch(uint256 _block, uint256 _maxEpoch) external view returns (uint256);
function floxContributors(address) external view returns (bool);
function futureAdmin() external view returns (address);
function getLastUserSlope(address _addr, uint128 _lockIndex) external view returns (int128);
function increaseAmount(uint256 _value, uint128 _lockIndex) external;
function increaseUnlockTime(uint128 _unlockTime, uint128 _lockIndex) external;
function indicesToIds(address, uint128) external view returns (uint256);
function isPaused() external view returns (bool);
function locked(address, uint256) external view returns (int128 amount, uint128 end);
function lockedById(address _addr, uint256 _id) external view returns (LockedBalance memory _lockInfo);
function lockedByIndex(address _addr, uint128 _index) external view returns (LockedBalance memory _lockInfo);
function lockedEnd(address _addr, uint128 _index) external view returns (uint256);
function name() external view returns (string memory);
function nextId(address) external view returns (uint256);
function numLocks(address) external view returns (uint128);
function pointHistory(
uint256
) external view returns (int128 bias, int128 slope, uint256 ts, uint256 blk, uint256 fpisAmt);
function recoverIERC20(address _tokenAddr, uint256 _amount) external;
function setFloxContributor(address _floxContributor, bool _isFloxContributor) external;
function setLVPIDUtils(address _lFpisUtilsAddr) external;
function slopeChanges(uint256) external view returns (int128);
function supply() external view returns (uint256);
function supplyAt(Point memory _point, uint256 _t) external view returns (uint256);
function symbol() external view returns (string memory);
function toggleContractPause() external;
function activateEmergencyUnlock() external;
function fpis() external view returns (address);
function totalFPISSupply() external view returns (uint256);
function totalFPISSupplyAt(uint256 _block) external view returns (uint256);
function totalSupply() external view returns (uint256);
function totalSupply(uint256 _timestamp) external view returns (uint256);
function totalSupplyAt(uint256 _block) external view returns (uint256);
function userPointEpoch(address, uint256) external view returns (uint256);
function userPointHistory(
address,
uint256,
uint256
) external view returns (int128 bias, int128 slope, uint256 ts, uint256 blk, uint256 fpisAmt);
function userPointHistoryTs(address _addr, uint128 _lockIndex, uint256 _idx) external view returns (uint256);
function lFpisUtils() external view returns (address);
function version() external view returns (string memory);
function withdraw(uint128 _lockIndex) external;
}
// src/contracts/VestedFXS-and-Flox/FPISLocker/FPISLockerUtils.sol
// @version 0.2.8
/**
* ====================================================================
* | ______ _______ |
* | / _____________ __ __ / ____(_____ ____ _____ ________ |
* | / /_ / ___/ __ `| |/_/ / /_ / / __ \/ __ `/ __ \/ ___/ _ \ |
* | / __/ / / / /_/ _> < / __/ / / / / / /_/ / / / / /__/ __/ |
* | /_/ /_/ \__,_/_/|_| /_/ /_/_/ /_/\__,_/_/ /_/\___/\___/ |
* | |
* ====================================================================
* ========================= FPISLockerUtils ==========================
* ====================================================================
* Helper and utility functions for VestedFXS
* Frax Finance: https://github.com/FraxFinance
*/
/**
*
* Voting escrow to have time-weighted votes
* Votes have a weight depending on time, so that users are committed
* to the future of (whatever they are voting for).
* The weight in this implementation is linear, and lock cannot be more than maxtime:
* w ^
* 1 + /
* | /
* | /
* | /
* |/
* 0 +--------+------> time
* maxtime (4 years?)
*/
/**
* @title FPISLockerUtils
* @author Frax Finance
* @notice This utility smart contract provides functions to get extended information from the FPISLocker contract.
*/
contract FPISLockerUtils is IlFPISStructs {
IFPISLocker public immutable lFPIS;
IERC20Metadata public immutable fpis;
uint256 public constant VOTE_END_POWER_BASIS_POINTS_UINT256 = 3330;
uint256 public constant MAX_BASIS_POINTS_UINT256 = 10_000;
/**
* @notice Contract constructor
* @param _FPISLocker Address of the FPISLocker contract
*/
constructor(address _FPISLocker) {
lFPIS = IFPISLocker(_FPISLocker);
fpis = IERC20Metadata(lFPIS.fpis());
}
/**
* @notice Used to get all of the locks of a given user.
* @dev The locks are retrieved indiscriminately, regardless of whether they are active or expired.
* @param _user Address of the user
* @return _userLockInfo DetailedUserLockInfo for the user. Includes _allLocks, _activeLocks, _expiredLocks, and FXS totals for these respectively
* @dev This lives on Fraxtal and will mostly be read-called in UIs, so gas not really an issue here
*/
function getDetailedUserLockInfo(address _user) public view returns (DetailedUserLockInfo memory _userLockInfo) {
// Get the total number of locks
uint256 _totalLocks = lFPIS.numLocks(_user);
uint128 _numberOfActiveLocks;
// Set the number locks for the user
_userLockInfo.numberOfLocks = _totalLocks;
// Set the user
_userLockInfo.user = _user;
// Initialize _allLocks
_userLockInfo.allLocks = new LockedBalanceExtended[](_totalLocks);
// Initial _isActive, which tracks if a given index is active
bool[] memory _isActive = new bool[](_totalLocks);
// Loop through all of the locks
for (uint256 i; i < _userLockInfo.allLocks.length; ) {
// Update the _allLocks return data
LockedBalance memory _thisLock = lFPIS.lockedByIndex(_user, uint128(i));
_userLockInfo.allLocks[i].id = lFPIS.indicesToIds(_user, uint128(i));
_userLockInfo.allLocks[i].index = uint128(i);
_userLockInfo.allLocks[i].amount = _thisLock.amount;
_userLockInfo.allLocks[i].end = _thisLock.end;
_userLockInfo.totalFpis[0] += _thisLock.amount;
// Determine whether it is active or expired
if (_thisLock.end > block.timestamp) {
// Update isActive tracking
_isActive[i] = true;
// Update _totalFxs for active locks
_userLockInfo.totalFpis[1] += _thisLock.amount;
unchecked {
++_numberOfActiveLocks;
}
} else {
// Update _totalFxs for expired locks
_userLockInfo.totalFpis[2] += _thisLock.amount;
}
unchecked {
++i;
}
}
// Initialize _activeLocks and _expiredLocks
_userLockInfo.activeLocks = new LockedBalanceExtended[](_numberOfActiveLocks);
_userLockInfo.expiredLocks = new LockedBalanceExtended[](_totalLocks - _numberOfActiveLocks);
// Loop through all of the locks again, this time for assigning to _activeLocks and _expiredLocks
uint128 _activeCounter;
uint128 _expiredCounter;
for (uint256 i; i < _userLockInfo.allLocks.length; ) {
// Get the lock info
LockedBalanceExtended memory _thisLock = _userLockInfo.allLocks[i];
// Sort the lock as either active or expired
if (_isActive[i]) {
// Active
_userLockInfo.activeLocks[_activeCounter] = _thisLock;
unchecked {
++_activeCounter;
}
} else {
// Expired
_userLockInfo.expiredLocks[_expiredCounter] = _thisLock;
unchecked {
++_expiredCounter;
}
}
unchecked {
++i;
}
}
}
/**
* @notice Used to get all of the locks of the given users. Same underlying code as getDetailedUserLockInfo
* @dev The locks are retrieved indiscriminately, regardless of whether they are active or expired.
* @param _users Addresses of the users
* @return _userLockInfos DetailedUserLockInfo[] for the users. Includes _allLocks, _activeLocks, _expiredLocks, and FXS totals for these respectively
* @dev This lives on Fraxtal and will mostly be read-called in UIs, so gas not really an issue here
*/
function getDetailedUserLockInfoBulk(
address[] memory _users
) public view returns (DetailedUserLockInfo[] memory _userLockInfos) {
// Save the number of user addresses
uint256 _numUsers = _users.length;
// Initialize the return array
_userLockInfos = new DetailedUserLockInfo[](_numUsers);
// Loop through all of the users and get their detailed lock info
for (uint256 i = 0; i < _numUsers; ) {
_userLockInfos[i] = getDetailedUserLockInfo(_users[i]);
unchecked {
i++;
}
}
}
/**
* @notice Used to get the longest lock of a given user.
* @dev The longest lock is the lock with the timestamp furthest in the future (can also be in the past if there are no active locks).
* @param user Address of the user
* @return The longest lock of the user
* @return The index of the longest lock
*/
function getLongestLock(address user) public view returns (LockedBalance memory, uint128) {
LockedBalance[] memory locks = new LockedBalance[](lFPIS.numLocks(user));
LockedBalance memory longestLock;
uint128 longestLockIndex;
for (uint256 i = 0; i < locks.length; ) {
uint128 currentEnd = lFPIS.lockedByIndex(user, uint128(i)).end;
if (currentEnd > longestLock.end) {
longestLock.end = currentEnd;
longestLock.amount = lFPIS.lockedByIndex(user, uint128(i)).amount;
longestLockIndex = uint128(i);
}
unchecked {
i++;
}
}
return (longestLock, longestLockIndex);
}
/**
* @notice Used to get longest locks of muliple users.
* @dev This returns the longest lock indiscriminately, regardless of whether it is active or expired.
* @dev The return value is an array of LongestLock structs, which contain the lock, the index of the lock, and the user.
* @param users Array of addresses of the users
* @return The LongestLocks of the users
*/
function getLongestLockBulk(address[] memory users) public view returns (LongestLock[] memory) {
LongestLock[] memory longestLocks = new LongestLock[](users.length);
LockedBalance memory longestLock;
uint128 longestLockIndex;
for (uint256 i = 0; i < users.length; ) {
for (uint256 j; j < lFPIS.numLocks(users[i]); ) {
uint128 currentEnd = lFPIS.lockedByIndex(users[i], uint128(j)).end;
if (currentEnd > longestLock.end) {
longestLock.end = currentEnd;
longestLock.amount = lFPIS.lockedByIndex(users[i], uint128(j)).amount;
longestLockIndex = uint128(j);
}
unchecked {
++j;
}
}
longestLocks[i] = LongestLock({ lock: longestLock, lockIndex: longestLockIndex, user: users[i] });
delete longestLock;
delete longestLockIndex;
unchecked {
++i;
}
}
return longestLocks;
}
/**
* @notice Calculate the APPROXIMATE amount of lFPIS, given an FPIS amount and a lock length. Cruder version of balanceOf math. Useful for sanity checks.
* @param _fpisAmount The amount of FPIS
* @param _lockSecsU128 The length of the lock
* @return _expectedLFPIS The expected amount of lFPIS. May be slightly off from actual (~1%)
* @dev Useful to compare to the slope/bias-based balancedOf to make sure the math is working
*/
function getCrudeExpectedLFPISOneLock(
int128 _fpisAmount,
uint128 _lockSecsU128
) public view returns (uint256 _expectedLFPIS) {
// lFPIS = FPIS in emergency unlock situation
if (lFPIS.emergencyUnlockActive()) {
return (uint256(int256(_fpisAmount)) * VOTE_END_POWER_BASIS_POINTS_UINT256) / MAX_BASIS_POINTS_UINT256;
}
// Truncate _timeLeft down to the nearest week
int128 _lockSecsI128 = int128((_lockSecsU128 / lFPIS.WEEK_UINT128()) * lFPIS.WEEK_UINT128());
// Calculate the expected lFPIS
_expectedLFPIS = uint256(
uint128(
((_fpisAmount * lFPIS.VOTE_END_POWER_BASIS_POINTS_INT128()) / lFPIS.MAX_BASIS_POINTS_INT128()) +
((_fpisAmount * _lockSecsI128 * lFPIS.VOTE_WEIGHT_MULTIPLIER_INT128()) /
lFPIS.MAXTIME_INT128() /
lFPIS.MAX_BASIS_POINTS_INT128())
)
);
}
/**
* @notice Calculate the APPROXIMATE amount of lFPIS, given FPIS amounts and lock lengths. Cruder version of balanceOf math. Useful for sanity checks.
* @param _fpisAmounts The amounts of FPIS
* @param _lockSecsU128 The length of the locks
* @return _expectedLFPIS The expected amount of lFPIS (summed). May be slightly off from actual (~1%)
* @dev Useful to compare to the slope/bias-based balancedOf to make sure the math is working
*/
function getCrudeExpectedLFPISMultiLock(
int128[] memory _fpisAmounts,
uint128[] memory _lockSecsU128
) public view returns (uint256 _expectedLFPIS) {
// See if you are in an emergency unlock situation
bool _isEmergencyUnlockActive = lFPIS.emergencyUnlockActive();
// Loop through the locks
for (uint128 i = 0; i < _fpisAmounts.length; ++i) {
// lFPIS = FPIS in emergency unlock situation
if (_isEmergencyUnlockActive) {
_expectedLFPIS +=
(uint256(int256(_fpisAmounts[i])) * VOTE_END_POWER_BASIS_POINTS_UINT256) /
MAX_BASIS_POINTS_UINT256;
} else {
_expectedLFPIS += getCrudeExpectedLFPISOneLock(_fpisAmounts[i], _lockSecsU128[i]);
}
}
}
/**
* @notice Calculate the APPROXIMATE amount of lFPIS a specific user should have. Cruder version of balanceOf math. Useful for sanity checks.
* @param _user The address of the user
* @return _expectedLFPIS The expected amount of lFPIS (summed). May be slightly off from actual (~1%)
* @dev Useful to compare to the slope/bias-based balancedOf to make sure the math is working
*/
function getCrudeExpectedLFPISUser(address _user) public view returns (uint256 _expectedLFPIS) {
// Get all of the user's locks
DetailedUserLockInfo memory _userLockInfo = getDetailedUserLockInfo(_user);
// See if you are in an emergency unlock situation
bool _isEmergencyUnlockActive = lFPIS.emergencyUnlockActive();
// Loop through all of the user's locks
for (uint128 i = 0; i < _userLockInfo.numberOfLocks; ) {
// Get the lock info
LockedBalanceExtended memory _lockInfo = _userLockInfo.allLocks[i];
// For the emergency unlock situation, lFPIS = FPIS
if (_isEmergencyUnlockActive) {
_expectedLFPIS +=
(uint256(int256(_lockInfo.amount)) * VOTE_END_POWER_BASIS_POINTS_UINT256) /
MAX_BASIS_POINTS_UINT256;
} else {
// Get the lock time to use
uint128 _lockSecsToUse;
if (_lockInfo.end < uint128(block.timestamp)) {
_lockSecsToUse = 0;
} else {
_lockSecsToUse = _lockInfo.end - uint128(block.timestamp);
}
// Get the approximate lFPIS
_expectedLFPIS += getCrudeExpectedLFPISOneLock(_lockInfo.amount, _lockSecsToUse);
}
unchecked {
++i;
}
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_FPISLocker","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"MAX_BASIS_POINTS_UINT256","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTE_END_POWER_BASIS_POINTS_UINT256","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fpis","outputs":[{"internalType":"contract IERC20Metadata","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int128[]","name":"_fpisAmounts","type":"int128[]"},{"internalType":"uint128[]","name":"_lockSecsU128","type":"uint128[]"}],"name":"getCrudeExpectedLFPISMultiLock","outputs":[{"internalType":"uint256","name":"_expectedLFPIS","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int128","name":"_fpisAmount","type":"int128"},{"internalType":"uint128","name":"_lockSecsU128","type":"uint128"}],"name":"getCrudeExpectedLFPISOneLock","outputs":[{"internalType":"uint256","name":"_expectedLFPIS","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getCrudeExpectedLFPISUser","outputs":[{"internalType":"uint256","name":"_expectedLFPIS","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getDetailedUserLockInfo","outputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"numberOfLocks","type":"uint256"},{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint128","name":"index","type":"uint128"},{"internalType":"int128","name":"amount","type":"int128"},{"internalType":"uint128","name":"end","type":"uint128"}],"internalType":"struct IlFPISStructs.LockedBalanceExtended[]","name":"allLocks","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint128","name":"index","type":"uint128"},{"internalType":"int128","name":"amount","type":"int128"},{"internalType":"uint128","name":"end","type":"uint128"}],"internalType":"struct IlFPISStructs.LockedBalanceExtended[]","name":"activeLocks","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint128","name":"index","type":"uint128"},{"internalType":"int128","name":"amount","type":"int128"},{"internalType":"uint128","name":"end","type":"uint128"}],"internalType":"struct IlFPISStructs.LockedBalanceExtended[]","name":"expiredLocks","type":"tuple[]"},{"internalType":"int128[3]","name":"totalFpis","type":"int128[3]"}],"internalType":"struct IlFPISStructs.DetailedUserLockInfo","name":"_userLockInfo","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"getDetailedUserLockInfoBulk","outputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"numberOfLocks","type":"uint256"},{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint128","name":"index","type":"uint128"},{"internalType":"int128","name":"amount","type":"int128"},{"internalType":"uint128","name":"end","type":"uint128"}],"internalType":"struct IlFPISStructs.LockedBalanceExtended[]","name":"allLocks","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint128","name":"index","type":"uint128"},{"internalType":"int128","name":"amount","type":"int128"},{"internalType":"uint128","name":"end","type":"uint128"}],"internalType":"struct IlFPISStructs.LockedBalanceExtended[]","name":"activeLocks","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint128","name":"index","type":"uint128"},{"internalType":"int128","name":"amount","type":"int128"},{"internalType":"uint128","name":"end","type":"uint128"}],"internalType":"struct IlFPISStructs.LockedBalanceExtended[]","name":"expiredLocks","type":"tuple[]"},{"internalType":"int128[3]","name":"totalFpis","type":"int128[3]"}],"internalType":"struct IlFPISStructs.DetailedUserLockInfo[]","name":"_userLockInfos","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getLongestLock","outputs":[{"components":[{"internalType":"int128","name":"amount","type":"int128"},{"internalType":"uint128","name":"end","type":"uint128"}],"internalType":"struct IlFPISStructs.LockedBalance","name":"","type":"tuple"},{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"}],"name":"getLongestLockBulk","outputs":[{"components":[{"components":[{"internalType":"int128","name":"amount","type":"int128"},{"internalType":"uint128","name":"end","type":"uint128"}],"internalType":"struct IlFPISStructs.LockedBalance","name":"lock","type":"tuple"},{"internalType":"uint128","name":"lockIndex","type":"uint128"},{"internalType":"address","name":"user","type":"address"}],"internalType":"struct IlFPISStructs.LongestLock[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lFPIS","outputs":[{"internalType":"contract IFPISLocker","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60c060405234801561000f575f80fd5b50604051611fab380380611fab83398101604081905261002e916100ac565b6001600160a01b038116608081905260408051631753296560e21b81529051635d4ca594916004808201926020929091908290030181865afa158015610076573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061009a91906100ac565b6001600160a01b031660a052506100d9565b5f602082840312156100bc575f80fd5b81516001600160a01b03811681146100d2575f80fd5b9392505050565b60805160a051611e2c61017f5f395f61013101525f8181610179015281816102240152818161038701528181610431015281816104b101528181610547015281816105c701528181610647015281816106ef0152818161076f015281816108f801528181610a5d01528181610aec01528181610ebf01528181610fcd0152818161108c0152818161112601528181611322015281816113e601526114c80152611e2c5ff3fe608060405234801561000f575f80fd5b50600436106100a6575f3560e01c80635d4ca5941161006e5780635d4ca5941461012c578063bbf79dc11461016b578063d47ada6614610174578063f37461ab1461019b578063f78fcccc146101e1578063fb908ddd146101f4575f80fd5b806302dc3a33146100aa57806303802473146100d05780630e5f6d5d146100d957806329d71cb6146100ec5780633c5933121461010c575b5f80fd5b6100bd6100b8366004611689565b610214565b6040519081526020015b60405180910390f35b6100bd610d0281565b6100bd6100e73660046116ce565b610384565b6100ff6100fa36600461176b565b61081e565b6040516100c7919061191c565b61011f61011a366004611689565b6108cf565b6040516100c7919061197f565b6101537f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100c7565b6100bd61271081565b6101537f000000000000000000000000000000000000000000000000000000000000000081565b6101ae6101a9366004611689565b610e89565b604080518351600f0b81526020938401516001600160801b039081169482019490945292909116908201526060016100c7565b6100bd6101ef3660046119ff565b611122565b61020761020236600461176b565b611284565b6040516100c79190611ac2565b5f8061021f836108cf565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f89464856040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a29190611b4e565b90505f5b8260200151816001600160801b0316101561037c575f8360400151826001600160801b0316815181106102db576102db611b6d565b60200260200101519050821561031e57612710610d028260400151600f0b6103039190611b95565b61030d9190611bc0565b6103179086611bd3565b9450610373565b5f426001600160801b031682606001516001600160801b0316101561034457505f610357565b4282606001516103549190611be6565b90505b610365826040015182610384565b61036f9087611bd3565b9550505b506001016102a6565b505050919050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f89464856040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104059190611b4e565b1561042e5761271061041d610d02600f86900b611b95565b6104279190611bc0565b9050610818565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637c10d93a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104af9190611c05565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637c10d93a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561050b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052f9190611c05565b6105399085611c20565b6105439190611c4d565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632de4fceb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c59190611c76565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637aa9b5566040518163ffffffff1660e01b8152600401602060405180830381865afa158015610621573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106459190611c76565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fc26cf346040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c59190611c76565b6106cf8488611c91565b6106d99190611c91565b6106e39190611cb0565b6106ed9190611cb0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632de4fceb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610749573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076d9190611c76565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ced3c9e46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ed9190611c76565b6107f79087611c91565b6108019190611cb0565b61080b9190611cec565b6001600160801b03169150505b92915050565b8051606090806001600160401b0381111561083b5761083b611705565b60405190808252806020026020018201604052801561087457816020015b61086161160e565b8152602001906001900390816108595790505b5091505f5b818110156108c8576108a384828151811061089657610896611b6d565b60200260200101516108cf565b8382815181106108b5576108b5611b6d565b6020908102919091010152600101610879565b5050919050565b6108d761160e565b604051630b9ef08360e41b81526001600160a01b0383811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063b9ef083090602401602060405180830381865afa15801561093f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109639190611c05565b6001600160801b0316602083018190526001600160a01b038416835290505f816001600160401b0381111561099a5761099a611705565b6040519080825280602002602001820160405280156109ea57816020015b604080516080810182525f8082526020808301829052928201819052606082015282525f199092019101816109b85790505b5060408401525f826001600160401b03811115610a0957610a09611705565b604051908082528060200260200182016040528015610a32578160200160208202803683370190505b5090505f5b846040015151811015610cc4576040516321c984e960e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906321c984e990610a94908a908690600401611d22565b6040805180830381865afa158015610aae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad29190611d44565b604051635f96d4e760e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635f96d4e790610b23908a908690600401611d22565b602060405180830381865afa158015610b3e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b629190611da2565b86604001518381518110610b7857610b78611b6d565b60200260200101515f0181815250508186604001518381518110610b9e57610b9e611b6d565b6020908102919091018101516001600160801b0390921691015280516040870151805184908110610bd157610bd1611b6d565b602002602001015160400190600f0b9081600f0b81525050806020015186604001518381518110610c0457610c04611b6d565b60209081029190910101516001600160801b0391909116606090910152805160a08701518051610c35908390611cec565b600f0b9052506020810151426001600160801b039091161115610c9d576001838381518110610c6657610c66611b6d565b911515602092830291909101820152815160a08801519091018051610c8c908390611cec565b600f0b905250600190930192610cbb565b805160a08701516040018051610cb4908390611cec565b600f0b9052505b50600101610a37565b50816001600160801b03166001600160401b03811115610ce657610ce6611705565b604051908082528060200260200182016040528015610d3657816020015b604080516080810182525f8082526020808301829052928201819052606082015282525f19909201910181610d045790505b506060850152610d4f6001600160801b03831684611db9565b6001600160401b03811115610d6657610d66611705565b604051908082528060200260200182016040528015610db657816020015b604080516080810182525f8082526020808301829052928201819052606082015282525f19909201910181610d845790505b5060808501525f80805b866040015151811015610e7e575f87604001518281518110610de457610de4611b6d565b60200260200101519050848281518110610e0057610e00611b6d565b602002602001015115610e4357808860600151856001600160801b031681518110610e2d57610e2d611b6d565b6020026020010181905250836001019350610e75565b808860800151846001600160801b031681518110610e6357610e63611b6d565b60200260200101819052508260010192505b50600101610dc0565b505050505050919050565b604080518082019091525f8082526020820152604051630b9ef08360e41b81526001600160a01b0383811660048301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063b9ef083090602401602060405180830381865afa158015610f04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f289190611c05565b6001600160801b03166001600160401b03811115610f4857610f48611705565b604051908082528060200260200182016040528015610f8c57816020015b604080518082019091525f8082526020820152815260200190600190039081610f665790505b509050610fa8604080518082019091525f808252602082015290565b5f805b8351811015611116576040516321c984e960e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906321c984e990611004908b908690600401611d22565b6040805180830381865afa15801561101e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110429190611d44565b60200151905083602001516001600160801b0316816001600160801b0316111561110d576001600160801b03811660208501526040516321c984e960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906321c984e9906110c3908b908690600401611d22565b6040805180830381865afa1580156110dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111019190611d44565b51600f0b845290915081905b50600101610fab565b50909590945092505050565b5f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f89464856040518163ffffffff1660e01b8152600401602060405180830381865afa158015611180573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a49190611b4e565b90505f5b8451816001600160801b0316101561127c57811561121157612710610d0286836001600160801b0316815181106111e1576111e1611b6d565b6020026020010151600f0b6111f69190611b95565b6112009190611bc0565b61120a9084611bd3565b925061126c565b61125f85826001600160801b03168151811061122f5761122f611b6d565b602002602001015185836001600160801b03168151811061125257611252611b6d565b6020026020010151610384565b6112699084611bd3565b92505b61127581611dcc565b90506111a8565b505092915050565b60605f82516001600160401b038111156112a0576112a0611705565b6040519080825280602002602001820160405280156112f657816020015b6040805160a0810182525f6060820181815260808301829052825260208083018290529282015282525f199092019101816112be5790505b509050611312604080518082019091525f808252602082015290565b5f805b8551811015611604575f5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b9ef083088848151811061136157611361611b6d565b60200260200101516040518263ffffffff1660e01b815260040161139491906001600160a01b0391909116815260200190565b602060405180830381865afa1580156113af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113d39190611c05565b6001600160801b031681101561157a575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166321c984e989858151811061142557611425611b6d565b6020026020010151846040518363ffffffff1660e01b815260040161144b929190611d22565b6040805180830381865afa158015611465573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114899190611d44565b60200151905084602001516001600160801b0316816001600160801b03161115611571576001600160801b038116602086015287516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906321c984e9908a908690811061150157611501611b6d565b6020026020010151846040518363ffffffff1660e01b8152600401611527929190611d22565b6040805180830381865afa158015611541573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115659190611d44565b51600f0b855290925082905b50600101611320565b506040518060600160405280848152602001836001600160801b031681526020018783815181106115ad576115ad611b6d565b60200260200101516001600160a01b03168152508482815181106115d3576115d3611b6d565b60200260200101819052506115f7604080518082019091525f808252602082015290565b92505f9150600101611315565b5091949350505050565b6040518060c001604052805f6001600160a01b031681526020015f815260200160608152602001606081526020016060815260200161164b611650565b905290565b60405180606001604052806003906020820280368337509192915050565b80356001600160a01b0381168114611684575f80fd5b919050565b5f60208284031215611699575f80fd5b6116a28261166e565b9392505050565b80600f0b81146116b7575f80fd5b50565b6001600160801b03811681146116b7575f80fd5b5f80604083850312156116df575f80fd5b82356116ea816116a9565b915060208301356116fa816116ba565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561174157611741611705565b604052919050565b5f6001600160401b0382111561176157611761611705565b5060051b60200190565b5f6020828403121561177b575f80fd5b81356001600160401b03811115611790575f80fd5b8201601f810184136117a0575f80fd5b80356117b36117ae82611749565b611719565b8082825260208201915060208360051b8501019250868311156117d4575f80fd5b6020840193505b828410156117fd576117ec8461166e565b8252602093840193909101906117db565b9695505050505050565b5f8151808452602084019350602083015f5b82811015611872578151805187526001600160801b0360208201511660208801526040810151600f0b60408801526001600160801b03606082015116606088015250608086019550602082019150600181019050611819565b5093949350505050565b60018060a01b038151168252602081015160208301525f604082015161010060408501526118ae610100850182611807565b9050606083015184820360608601526118c78282611807565b915050608083015184820360808601526118e18282611807565b91505060a083015160a085015f5b6003811015611911578251600f0b8252602092830192909101906001016118ef565b509195945050505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561197357603f1987860301845261195e85835161187c565b94506020938401939190910190600101611942565b50929695505050505050565b602081525f6116a2602083018461187c565b5f82601f8301126119a0575f80fd5b81356119ae6117ae82611749565b8082825260208201915060208360051b8601019250858311156119cf575f80fd5b602085015b838110156119f55780356119e7816116ba565b8352602092830192016119d4565b5095945050505050565b5f8060408385031215611a10575f80fd5b82356001600160401b03811115611a25575f80fd5b8301601f81018513611a35575f80fd5b8035611a436117ae82611749565b8082825260208201915060208360051b850101925087831115611a64575f80fd5b6020840193505b82841015611a8f578335611a7e816116a9565b825260209384019390910190611a6b565b945050505060208301356001600160401b03811115611aac575f80fd5b611ab885828601611991565b9150509250929050565b602080825282518282018190525f918401906040840190835b81811015611b43578351611b068482518051600f0b82526020908101516001600160801b0316910152565b6020818101516001600160801b0316604086810191909152909101516001600160a01b031660608501529390930192608090920191600101611adb565b509095945050505050565b5f60208284031215611b5e575f80fd5b815180151581146116a2575f80fd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761081857610818611b81565b634e487b7160e01b5f52601260045260245ffd5b5f82611bce57611bce611bac565b500490565b8082018082111561081857610818611b81565b6001600160801b03828116828216039081111561081857610818611b81565b5f60208284031215611c15575f80fd5b81516116a2816116ba565b5f6001600160801b03831680611c3857611c38611bac565b806001600160801b0384160491505092915050565b6001600160801b038181168382160290811690818114611c6f57611c6f611b81565b5092915050565b5f60208284031215611c86575f80fd5b81516116a2816116a9565b5f82600f0b82600f0b0280600f0b9150808214611c6f57611c6f611b81565b5f81600f0b83600f0b80611cc657611cc6611bac565b60016001607f1b031982145f1982141615611ce357611ce3611b81565b90059392505050565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff811360016001607f1b03198212171561081857610818611b81565b6001600160a01b039290921682526001600160801b0316602082015260400190565b5f6040828403128015611d55575f80fd5b50604080519081016001600160401b0381118282101715611d7857611d78611705565b6040528251611d86816116a9565b81526020830151611d96816116ba565b60208201529392505050565b5f60208284031215611db2575f80fd5b5051919050565b8181038181111561081857610818611b81565b5f6001600160801b0382166001600160801b038103611ded57611ded611b81565b6001019291505056fea2646970667358221220d93b3554b029b9083dc4d8c56a0a7db302c903c8a8c3242f10ef109191dee5f964736f6c634300081a0033000000000000000000000000437e9f65ca234ecfed12149109587139d435ad35
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106100a6575f3560e01c80635d4ca5941161006e5780635d4ca5941461012c578063bbf79dc11461016b578063d47ada6614610174578063f37461ab1461019b578063f78fcccc146101e1578063fb908ddd146101f4575f80fd5b806302dc3a33146100aa57806303802473146100d05780630e5f6d5d146100d957806329d71cb6146100ec5780633c5933121461010c575b5f80fd5b6100bd6100b8366004611689565b610214565b6040519081526020015b60405180910390f35b6100bd610d0281565b6100bd6100e73660046116ce565b610384565b6100ff6100fa36600461176b565b61081e565b6040516100c7919061191c565b61011f61011a366004611689565b6108cf565b6040516100c7919061197f565b6101537f000000000000000000000000fc0000000000000000000000000000000000000481565b6040516001600160a01b0390911681526020016100c7565b6100bd61271081565b6101537f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad3581565b6101ae6101a9366004611689565b610e89565b604080518351600f0b81526020938401516001600160801b039081169482019490945292909116908201526060016100c7565b6100bd6101ef3660046119ff565b611122565b61020761020236600461176b565b611284565b6040516100c79190611ac2565b5f8061021f836108cf565b90505f7f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad356001600160a01b031663f89464856040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a29190611b4e565b90505f5b8260200151816001600160801b0316101561037c575f8360400151826001600160801b0316815181106102db576102db611b6d565b60200260200101519050821561031e57612710610d028260400151600f0b6103039190611b95565b61030d9190611bc0565b6103179086611bd3565b9450610373565b5f426001600160801b031682606001516001600160801b0316101561034457505f610357565b4282606001516103549190611be6565b90505b610365826040015182610384565b61036f9087611bd3565b9550505b506001016102a6565b505050919050565b5f7f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad356001600160a01b031663f89464856040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104059190611b4e565b1561042e5761271061041d610d02600f86900b611b95565b6104279190611bc0565b9050610818565b5f7f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad356001600160a01b0316637c10d93a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104af9190611c05565b7f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad356001600160a01b0316637c10d93a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561050b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052f9190611c05565b6105399085611c20565b6105439190611c4d565b90507f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad356001600160a01b0316632de4fceb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c59190611c76565b7f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad356001600160a01b0316637aa9b5566040518163ffffffff1660e01b8152600401602060405180830381865afa158015610621573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106459190611c76565b7f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad356001600160a01b031663fc26cf346040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c59190611c76565b6106cf8488611c91565b6106d99190611c91565b6106e39190611cb0565b6106ed9190611cb0565b7f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad356001600160a01b0316632de4fceb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610749573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076d9190611c76565b7f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad356001600160a01b031663ced3c9e46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ed9190611c76565b6107f79087611c91565b6108019190611cb0565b61080b9190611cec565b6001600160801b03169150505b92915050565b8051606090806001600160401b0381111561083b5761083b611705565b60405190808252806020026020018201604052801561087457816020015b61086161160e565b8152602001906001900390816108595790505b5091505f5b818110156108c8576108a384828151811061089657610896611b6d565b60200260200101516108cf565b8382815181106108b5576108b5611b6d565b6020908102919091010152600101610879565b5050919050565b6108d761160e565b604051630b9ef08360e41b81526001600160a01b0383811660048301525f917f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad359091169063b9ef083090602401602060405180830381865afa15801561093f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109639190611c05565b6001600160801b0316602083018190526001600160a01b038416835290505f816001600160401b0381111561099a5761099a611705565b6040519080825280602002602001820160405280156109ea57816020015b604080516080810182525f8082526020808301829052928201819052606082015282525f199092019101816109b85790505b5060408401525f826001600160401b03811115610a0957610a09611705565b604051908082528060200260200182016040528015610a32578160200160208202803683370190505b5090505f5b846040015151811015610cc4576040516321c984e960e01b81525f906001600160a01b037f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad3516906321c984e990610a94908a908690600401611d22565b6040805180830381865afa158015610aae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad29190611d44565b604051635f96d4e760e01b81529091506001600160a01b037f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad351690635f96d4e790610b23908a908690600401611d22565b602060405180830381865afa158015610b3e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b629190611da2565b86604001518381518110610b7857610b78611b6d565b60200260200101515f0181815250508186604001518381518110610b9e57610b9e611b6d565b6020908102919091018101516001600160801b0390921691015280516040870151805184908110610bd157610bd1611b6d565b602002602001015160400190600f0b9081600f0b81525050806020015186604001518381518110610c0457610c04611b6d565b60209081029190910101516001600160801b0391909116606090910152805160a08701518051610c35908390611cec565b600f0b9052506020810151426001600160801b039091161115610c9d576001838381518110610c6657610c66611b6d565b911515602092830291909101820152815160a08801519091018051610c8c908390611cec565b600f0b905250600190930192610cbb565b805160a08701516040018051610cb4908390611cec565b600f0b9052505b50600101610a37565b50816001600160801b03166001600160401b03811115610ce657610ce6611705565b604051908082528060200260200182016040528015610d3657816020015b604080516080810182525f8082526020808301829052928201819052606082015282525f19909201910181610d045790505b506060850152610d4f6001600160801b03831684611db9565b6001600160401b03811115610d6657610d66611705565b604051908082528060200260200182016040528015610db657816020015b604080516080810182525f8082526020808301829052928201819052606082015282525f19909201910181610d845790505b5060808501525f80805b866040015151811015610e7e575f87604001518281518110610de457610de4611b6d565b60200260200101519050848281518110610e0057610e00611b6d565b602002602001015115610e4357808860600151856001600160801b031681518110610e2d57610e2d611b6d565b6020026020010181905250836001019350610e75565b808860800151846001600160801b031681518110610e6357610e63611b6d565b60200260200101819052508260010192505b50600101610dc0565b505050505050919050565b604080518082019091525f8082526020820152604051630b9ef08360e41b81526001600160a01b0383811660048301525f9182917f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad35169063b9ef083090602401602060405180830381865afa158015610f04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f289190611c05565b6001600160801b03166001600160401b03811115610f4857610f48611705565b604051908082528060200260200182016040528015610f8c57816020015b604080518082019091525f8082526020820152815260200190600190039081610f665790505b509050610fa8604080518082019091525f808252602082015290565b5f805b8351811015611116576040516321c984e960e01b81525f906001600160a01b037f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad3516906321c984e990611004908b908690600401611d22565b6040805180830381865afa15801561101e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110429190611d44565b60200151905083602001516001600160801b0316816001600160801b0316111561110d576001600160801b03811660208501526040516321c984e960e01b81526001600160a01b037f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad3516906321c984e9906110c3908b908690600401611d22565b6040805180830381865afa1580156110dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111019190611d44565b51600f0b845290915081905b50600101610fab565b50909590945092505050565b5f807f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad356001600160a01b031663f89464856040518163ffffffff1660e01b8152600401602060405180830381865afa158015611180573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a49190611b4e565b90505f5b8451816001600160801b0316101561127c57811561121157612710610d0286836001600160801b0316815181106111e1576111e1611b6d565b6020026020010151600f0b6111f69190611b95565b6112009190611bc0565b61120a9084611bd3565b925061126c565b61125f85826001600160801b03168151811061122f5761122f611b6d565b602002602001015185836001600160801b03168151811061125257611252611b6d565b6020026020010151610384565b6112699084611bd3565b92505b61127581611dcc565b90506111a8565b505092915050565b60605f82516001600160401b038111156112a0576112a0611705565b6040519080825280602002602001820160405280156112f657816020015b6040805160a0810182525f6060820181815260808301829052825260208083018290529282015282525f199092019101816112be5790505b509050611312604080518082019091525f808252602082015290565b5f805b8551811015611604575f5b7f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad356001600160a01b031663b9ef083088848151811061136157611361611b6d565b60200260200101516040518263ffffffff1660e01b815260040161139491906001600160a01b0391909116815260200190565b602060405180830381865afa1580156113af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113d39190611c05565b6001600160801b031681101561157a575f7f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad356001600160a01b03166321c984e989858151811061142557611425611b6d565b6020026020010151846040518363ffffffff1660e01b815260040161144b929190611d22565b6040805180830381865afa158015611465573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114899190611d44565b60200151905084602001516001600160801b0316816001600160801b03161115611571576001600160801b038116602086015287516001600160a01b037f000000000000000000000000437e9f65ca234ecfed12149109587139d435ad3516906321c984e9908a908690811061150157611501611b6d565b6020026020010151846040518363ffffffff1660e01b8152600401611527929190611d22565b6040805180830381865afa158015611541573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115659190611d44565b51600f0b855290925082905b50600101611320565b506040518060600160405280848152602001836001600160801b031681526020018783815181106115ad576115ad611b6d565b60200260200101516001600160a01b03168152508482815181106115d3576115d3611b6d565b60200260200101819052506115f7604080518082019091525f808252602082015290565b92505f9150600101611315565b5091949350505050565b6040518060c001604052805f6001600160a01b031681526020015f815260200160608152602001606081526020016060815260200161164b611650565b905290565b60405180606001604052806003906020820280368337509192915050565b80356001600160a01b0381168114611684575f80fd5b919050565b5f60208284031215611699575f80fd5b6116a28261166e565b9392505050565b80600f0b81146116b7575f80fd5b50565b6001600160801b03811681146116b7575f80fd5b5f80604083850312156116df575f80fd5b82356116ea816116a9565b915060208301356116fa816116ba565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561174157611741611705565b604052919050565b5f6001600160401b0382111561176157611761611705565b5060051b60200190565b5f6020828403121561177b575f80fd5b81356001600160401b03811115611790575f80fd5b8201601f810184136117a0575f80fd5b80356117b36117ae82611749565b611719565b8082825260208201915060208360051b8501019250868311156117d4575f80fd5b6020840193505b828410156117fd576117ec8461166e565b8252602093840193909101906117db565b9695505050505050565b5f8151808452602084019350602083015f5b82811015611872578151805187526001600160801b0360208201511660208801526040810151600f0b60408801526001600160801b03606082015116606088015250608086019550602082019150600181019050611819565b5093949350505050565b60018060a01b038151168252602081015160208301525f604082015161010060408501526118ae610100850182611807565b9050606083015184820360608601526118c78282611807565b915050608083015184820360808601526118e18282611807565b91505060a083015160a085015f5b6003811015611911578251600f0b8252602092830192909101906001016118ef565b509195945050505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561197357603f1987860301845261195e85835161187c565b94506020938401939190910190600101611942565b50929695505050505050565b602081525f6116a2602083018461187c565b5f82601f8301126119a0575f80fd5b81356119ae6117ae82611749565b8082825260208201915060208360051b8601019250858311156119cf575f80fd5b602085015b838110156119f55780356119e7816116ba565b8352602092830192016119d4565b5095945050505050565b5f8060408385031215611a10575f80fd5b82356001600160401b03811115611a25575f80fd5b8301601f81018513611a35575f80fd5b8035611a436117ae82611749565b8082825260208201915060208360051b850101925087831115611a64575f80fd5b6020840193505b82841015611a8f578335611a7e816116a9565b825260209384019390910190611a6b565b945050505060208301356001600160401b03811115611aac575f80fd5b611ab885828601611991565b9150509250929050565b602080825282518282018190525f918401906040840190835b81811015611b43578351611b068482518051600f0b82526020908101516001600160801b0316910152565b6020818101516001600160801b0316604086810191909152909101516001600160a01b031660608501529390930192608090920191600101611adb565b509095945050505050565b5f60208284031215611b5e575f80fd5b815180151581146116a2575f80fd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761081857610818611b81565b634e487b7160e01b5f52601260045260245ffd5b5f82611bce57611bce611bac565b500490565b8082018082111561081857610818611b81565b6001600160801b03828116828216039081111561081857610818611b81565b5f60208284031215611c15575f80fd5b81516116a2816116ba565b5f6001600160801b03831680611c3857611c38611bac565b806001600160801b0384160491505092915050565b6001600160801b038181168382160290811690818114611c6f57611c6f611b81565b5092915050565b5f60208284031215611c86575f80fd5b81516116a2816116a9565b5f82600f0b82600f0b0280600f0b9150808214611c6f57611c6f611b81565b5f81600f0b83600f0b80611cc657611cc6611bac565b60016001607f1b031982145f1982141615611ce357611ce3611b81565b90059392505050565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff811360016001607f1b03198212171561081857610818611b81565b6001600160a01b039290921682526001600160801b0316602082015260400190565b5f6040828403128015611d55575f80fd5b50604080519081016001600160401b0381118282101715611d7857611d78611705565b6040528251611d86816116a9565b81526020830151611d96816116ba565b60208201529392505050565b5f60208284031215611db2575f80fd5b5051919050565b8181038181111561081857610818611b81565b5f6001600160801b0382166001600160801b038103611ded57611ded611b81565b6001019291505056fea2646970667358221220d93b3554b029b9083dc4d8c56a0a7db302c903c8a8c3242f10ef109191dee5f964736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000437e9f65ca234ecfed12149109587139d435ad35
-----Decoded View---------------
Arg [0] : _FPISLocker (address): 0x437E9F65cA234eCfed12149109587139d435AD35
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000437e9f65ca234ecfed12149109587139d435ad35
Deployed Bytecode Sourcemap
86517:12587:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;97640:1461;;;;;;:::i;:::-;;:::i;:::-;;;529:25:1;;;517:2;502:18;97640:1461:0;;;;;;;;86652:66;;86714:4;86652:66;;94893:992;;;;;;:::i;:::-;;:::i;91144:619::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;87530:3063::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;86607:36::-;;;;;;;;-1:-1:-1;;;;;6008:32:1;;;5990:51;;5978:2;5963:18;86607:36:0;5821:226:1;86725:57:0;;86776:6;86725:57;;86566:34;;;;;92122:758;;;;;;:::i;:::-;;:::i;:::-;;;;6374:12:1;;6370:2;6359:28;6347:41;;6441:4;6430:16;;;6424:23;-1:-1:-1;;;;;6420:64:1;;;6404:14;;;6397:88;;;;6818:47;;;;6798:18;;;6791:75;6720:2;6705:18;92122:758:0;6496:376:1;96375:840:0;;;;;;:::i;:::-;;:::i;93300:1112::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;97640:1461::-;97711:22;97786:41;97830:30;97854:5;97830:23;:30::i;:::-;97786:74;;97933:29;97965:5;-1:-1:-1;;;;;97965:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;97933:61;;98061:9;98056:1038;98080:13;:27;;;98076:1;-1:-1:-1;;;;;98076:31:0;;98056:1038;;;98160:38;98201:13;:22;;;98224:1;-1:-1:-1;;;;;98201:25:0;;;;;;;;;:::i;:::-;;;;;;;98160:66;;98312:24;98308:711;;;86776:6;86714:4;98412:9;:16;;;98405:24;;98397:71;;;;:::i;:::-;98396:121;;;;:::i;:::-;98357:160;;;;:::i;:::-;;;98308:711;;;98603:22;98672:15;-1:-1:-1;;;;;98648:40:0;:9;:13;;;-1:-1:-1;;;;;98648:40:0;;98644:213;;;-1:-1:-1;98730:1:0;98644:213;;;98821:15;98797:9;:13;;;:40;;;;:::i;:::-;98780:57;;98644:213;98941:62;98970:9;:16;;;98988:14;98941:28;:62::i;:::-;98923:80;;;;:::i;:::-;;;98539:480;98308:711;-1:-1:-1;99064:3:0;;98056:1038;;;;97735:1366;;97640:1461;;;:::o;94893:992::-;95020:22;95114:5;-1:-1:-1;;;;;95114:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;95110:164;;;86776:6;95168:66;86714:4;95176:19;;;;95168:66;:::i;:::-;95167:95;;;;:::i;:::-;95160:102;;;;95110:164;95342:20;95413:5;-1:-1:-1;;;;;95413:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;95389:5;-1:-1:-1;;;;;95389:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;95373:36;;:13;:36;:::i;:::-;95372:61;;;;:::i;:::-;95342:92;;95819:5;-1:-1:-1;;;;;95819:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;95769:5;-1:-1:-1;;;;;95769:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;95703:5;-1:-1:-1;;;;;95703:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;95673:27;95687:13;95673:11;:27;:::i;:::-;:67;;;;:::i;:::-;95672:119;;;;:::i;:::-;:178;;;;:::i;:::-;95615:5;-1:-1:-1;;;;;95615:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;95569:5;-1:-1:-1;;;;;95569:40:0;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;95555:56;;:11;:56;:::i;:::-;95554:92;;;;:::i;:::-;95553:298;;;;:::i;:::-;-1:-1:-1;;;;;95505:372:0;95488:389;;95044:841;94893:992;;;;;:::o;91144:619::-;91366:13;;91243:44;;91366:13;-1:-1:-1;;;;;91449:37:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;91432:54;;91579:9;91574:182;91598:9;91594:1;:13;91574:182;;;91646:34;91670:6;91677:1;91670:9;;;;;;;;:::i;:::-;;;;;;;91646:23;:34::i;:::-;91626:14;91641:1;91626:17;;;;;;;;:::i;:::-;;;;;;;;;;:54;91726:3;;91574:182;;;;91289:474;91144:619;;;:::o;87530:3063::-;87599:41;;:::i;:::-;87717:21;;-1:-1:-1;;;87717:21:0;;-1:-1:-1;;;;;6008:32:1;;;87717:21:0;;;5990:51:1;87695:19:0;;87717:5;:14;;;;;;5963:18:1;;87717:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;87695:43:0;87836:27;;;:41;;;-1:-1:-1;;;;;87915:26:0;;;;87695:43;-1:-1:-1;87749:28:0;87695:43;-1:-1:-1;;;;;88012:40:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;88012:40:0;;-1:-1:-1;;88012:40:0;;;;;;;;;;;-1:-1:-1;87987:22:0;;;:65;88136:23;88173:11;-1:-1:-1;;;;;88162:23:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;88162:23:0;;88136:49;;88245:9;88240:1159;88260:13;:22;;;:29;88256:1;:33;88240:1159;;;88390:38;;-1:-1:-1;;;88390:38:0;;88357:30;;-1:-1:-1;;;;;88390:5:0;:19;;;;:38;;88410:5;;88425:1;;88390:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;88474:37;;-1:-1:-1;;;88474:37:0;;88357:71;;-1:-1:-1;;;;;;88474:5:0;:18;;;;:37;;88493:5;;88508:1;;88474:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;88443:13;:22;;;88466:1;88443:25;;;;;;;;:::i;:::-;;;;;;;:28;;:68;;;;;88568:1;88526:13;:22;;;88549:1;88526:25;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;88526:44:0;;;:31;;:44;88620:16;;88585:22;;;;:25;;88608:1;;88585:25;;;;;;:::i;:::-;;;;;;;:32;;:51;;;;;;;;;;;88683:9;:13;;;88651;:22;;;88674:1;88651:25;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;88651:45:0;;;;:29;;;;:45;88741:16;;88711:23;;;;:46;;;;88741:16;;88711:46;:::i;:::-;;;;;-1:-1:-1;88836:13:0;;;;88852:15;-1:-1:-1;;;;;88836:31:0;;;;88832:494;;;88948:4;88933:9;88943:1;88933:12;;;;;;;;:::i;:::-;:19;;;:12;;;;;;;;;;:19;89057:16;;89027:23;;;;:26;;;:46;;;;89057:16;;89027:46;:::i;:::-;;;;;-1:-1:-1;89127:22:0;;;;;88832:494;;;89294:16;;89264:23;;;;:26;;:46;;;;89294:16;;89264:46;:::i;:::-;;;;;-1:-1:-1;88832:494:0;-1:-1:-1;89369:3:0;;88240:1159;;;;89521:20;-1:-1:-1;;;;;89493:49:0;-1:-1:-1;;;;;89493:49:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;89493:49:0;;-1:-1:-1;;89493:49:0;;;;;;;;;;;-1:-1:-1;89465:25:0;;;:77;89610:34;-1:-1:-1;;;;;89610:34:0;;:11;:34;:::i;:::-;-1:-1:-1;;;;;89582:63:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;89582:63:0;;-1:-1:-1;;89582:63:0;;;;;;;;;;;-1:-1:-1;89553:26:0;;;:92;89765:22;;;89832:754;89852:13;:22;;;:29;89848:1;:33;89832:754;;;89934:38;89975:13;:22;;;89998:1;89975:25;;;;;;;;:::i;:::-;;;;;;;89934:66;;90079:9;90089:1;90079:12;;;;;;;;:::i;:::-;;;;;;;90075:436;;;90183:9;90139:13;:25;;;90165:14;-1:-1:-1;;;;;90139:41:0;;;;;;;;;:::i;:::-;;;;;;:53;;;;90246:16;;;;;90075:436;;;90396:9;90350:13;:26;;;90377:15;-1:-1:-1;;;;;90350:43:0;;;;;;;;;:::i;:::-;;;;;;:55;;;;90459:17;;;;;90075:436;-1:-1:-1;90556:3:0;;89832:754;;;;87642:2951;;;;;87530:3063;;;:::o;92122:758::-;-1:-1:-1;;;;;;;;;;;;;;;;;92274:20:0;;-1:-1:-1;;;92274:20:0;;-1:-1:-1;;;;;6008:32:1;;;92274:20:0;;;5990:51:1;92203:7:0;;;;92274:5;:14;;;;5963:18:1;;92274:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;92254:41:0;-1:-1:-1;;;;;92254:41:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;92254:41:0;;;;;;;;;;;;;;;;92223:72;;92306:32;-1:-1:-1;;;;;;;;;;;;;;;;;;;92306:32:0;92349:24;;92386:436;92410:5;:12;92406:1;:16;92386:436;;;92462:37;;-1:-1:-1;;;92462:37:0;;92441:18;;-1:-1:-1;;;;;92462:5:0;:19;;;;:37;;92482:4;;92496:1;;92462:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;;92441:62;;92535:11;:15;;;-1:-1:-1;;;;;92522:28:0;:10;-1:-1:-1;;;;;92522:28:0;;92518:229;;;-1:-1:-1;;;;;92571:28:0;;:15;;;:28;92639:37;;-1:-1:-1;;;92639:37:0;;-1:-1:-1;;;;;92639:5:0;:19;;;;:37;;92659:4;;92673:1;;92639:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;92618:65;;;;92729:1;;-1:-1:-1;92729:1:0;;92518:229;-1:-1:-1;92792:3:0;;92386:436;;;-1:-1:-1;92842:11:0;;92855:16;;-1:-1:-1;92122:758:0;-1:-1:-1;;;92122:758:0:o;96375:840::-;96523:22;96618:29;96650:5;-1:-1:-1;;;;;96650:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;96618:61;;96732:9;96727:481;96751:12;:19;96747:1;-1:-1:-1;;;;;96747:23:0;;96727:481;;;96855:24;96851:346;;;86776:6;86714:4;96955:12;96968:1;-1:-1:-1;;;;;96955:15:0;;;;;;;;;:::i;:::-;;;;;;;96948:23;;96940:70;;;;:::i;:::-;96939:120;;;;:::i;:::-;96900:159;;;;:::i;:::-;;;96851:346;;;97118:63;97147:12;97160:1;-1:-1:-1;;;;;97147:15:0;;;;;;;;;:::i;:::-;;;;;;;97164:13;97178:1;-1:-1:-1;;;;;97164:16:0;;;;;;;;;:::i;:::-;;;;;;;97118:28;:63::i;:::-;97100:81;;;;:::i;:::-;;;96851:346;96772:3;;;:::i;:::-;;;96727:481;;;;96547:668;96375:840;;;;:::o;93300:1112::-;93373:20;93406:33;93460:5;:12;-1:-1:-1;;;;;93442:31:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;93442:31:0;;-1:-1:-1;;93442:31:0;;;;;;;;;;;;93406:67;;93484:32;-1:-1:-1;;;;;;;;;;;;;;;;;;;93484:32:0;93527:24;;93564:809;93588:5;:12;93584:1;:16;93564:809;;;93624:9;93619:492;93639:5;-1:-1:-1;;;;;93639:14:0;;93654:5;93660:1;93654:8;;;;;;;;:::i;:::-;;;;;;;93639:24;;;;;;;;;;;;;;-1:-1:-1;;;;;6008:32:1;;;;5990:51;;5978:2;5963:18;;5821:226;93639:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;93635:28:0;:1;:28;93619:492;;;93686:18;93707:5;-1:-1:-1;;;;;93707:19:0;;93727:5;93733:1;93727:8;;;;;;;;:::i;:::-;;;;;;;93745:1;93707:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;93686:66;;93788:11;:15;;;-1:-1:-1;;;;;93775:28:0;:10;-1:-1:-1;;;;;93775:28:0;;93771:249;;;-1:-1:-1;;;;;93828:28:0;;:15;;;:28;93920:8;;-1:-1:-1;;;;;93900:5:0;:19;;;;93920:5;;93926:1;;93920:8;;;;;;:::i;:::-;;;;;;;93938:1;93900:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;93879:69;;;;93998:1;;-1:-1:-1;93998:1:0;;93771:249;-1:-1:-1;94073:3:0;;93619:492;;;;94145:79;;;;;;;;94165:11;94145:79;;;;94189:16;-1:-1:-1;;;;;94145:79:0;;;;;94213:5;94219:1;94213:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;94145:79:0;;;;94127:12;94140:1;94127:15;;;;;;;;:::i;:::-;;;;;;:97;;;;94241:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;94241:18:0;;-1:-1:-1;94274:23:0;;-1:-1:-1;94343:3:0;;93564:809;;;-1:-1:-1;94392:12:0;;93300:1112;-1:-1:-1;;;;93300:1112:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;565:120::-;654:5;650:2;639:21;632:5;629:32;619:60;;675:1;672;665:12;619:60;565:120;:::o;690:146::-;-1:-1:-1;;;;;769:5:1;765:46;758:5;755:57;745:85;;826:1;823;816:12;841:386;908:6;916;969:2;957:9;948:7;944:23;940:32;937:52;;;985:1;982;975:12;937:52;1024:9;1011:23;1043:30;1067:5;1043:30;:::i;:::-;1092:5;-1:-1:-1;1149:2:1;1134:18;;1121:32;1162:33;1121:32;1162:33;:::i;:::-;1214:7;1204:17;;;841:386;;;;;:::o;1232:127::-;1293:10;1288:3;1284:20;1281:1;1274:31;1324:4;1321:1;1314:15;1348:4;1345:1;1338:15;1364:275;1435:2;1429:9;1500:2;1481:13;;-1:-1:-1;;1477:27:1;1465:40;;-1:-1:-1;;;;;1520:34:1;;1556:22;;;1517:62;1514:88;;;1582:18;;:::i;:::-;1618:2;1611:22;1364:275;;-1:-1:-1;1364:275:1:o;1644:183::-;1704:4;-1:-1:-1;;;;;1729:6:1;1726:30;1723:56;;;1759:18;;:::i;:::-;-1:-1:-1;1804:1:1;1800:14;1816:4;1796:25;;1644:183::o;1832:892::-;1916:6;1969:2;1957:9;1948:7;1944:23;1940:32;1937:52;;;1985:1;1982;1975:12;1937:52;2025:9;2012:23;-1:-1:-1;;;;;2050:6:1;2047:30;2044:50;;;2090:1;2087;2080:12;2044:50;2113:22;;2166:4;2158:13;;2154:27;-1:-1:-1;2144:55:1;;2195:1;2192;2185:12;2144:55;2235:2;2222:16;2258:64;2274:47;2314:6;2274:47;:::i;:::-;2258:64;:::i;:::-;2344:3;2368:6;2363:3;2356:19;2400:2;2395:3;2391:12;2384:19;;2455:2;2445:6;2442:1;2438:14;2434:2;2430:23;2426:32;2412:46;;2481:7;2473:6;2470:19;2467:39;;;2502:1;2499;2492:12;2467:39;2534:2;2530;2526:11;2515:22;;2546:148;2562:6;2557:3;2554:15;2546:148;;;2628:23;2647:3;2628:23;:::i;:::-;2616:36;;2681:2;2579:12;;;;2672;;;;2546:148;;;2713:5;1832:892;-1:-1:-1;;;;;;1832:892:1:o;2729:742::-;2803:3;2841:5;2835:12;2868:6;2863:3;2856:19;2900:4;2895:3;2891:14;2884:21;;2939:4;2932:5;2928:16;2962:1;2972:474;2986:6;2983:1;2980:13;2972:474;;;3051:6;3045:13;3089:2;3083:9;3078:3;3071:22;-1:-1:-1;;;;;3147:4:1;3143:2;3139:13;3133:20;3129:61;3122:4;3117:3;3113:14;3106:85;3256:4;3252:2;3248:13;3242:20;3238:2;3227:36;3220:4;3215:3;3211:14;3204:60;-1:-1:-1;;;;;3318:4:1;3314:2;3310:13;3304:20;3300:61;3293:4;3288:3;3284:14;3277:85;;3391:4;3386:3;3382:14;3375:21;;3431:4;3423:6;3419:17;3409:27;;3008:1;3005;3001:9;2996:14;;2972:474;;;-1:-1:-1;3462:3:1;;2729:742;-1:-1:-1;;;;2729:742:1:o;3476:1174::-;3604:1;3600;3595:3;3591:11;3587:19;3579:5;3573:12;3569:38;3564:3;3557:51;3657:4;3650:5;3646:16;3640:23;3633:4;3628:3;3624:14;3617:47;3539:3;3710:4;3703:5;3699:16;3693:23;3748:6;3741:4;3736:3;3732:14;3725:30;3776:81;3849:6;3844:3;3840:16;3826:12;3776:81;:::i;:::-;3764:93;;3905:4;3898:5;3894:16;3888:23;3953:3;3947:4;3943:14;3936:4;3931:3;3927:14;3920:38;3981:71;4047:4;4031:14;3981:71;:::i;:::-;3967:85;;;4100:4;4093:5;4089:16;4083:23;4150:3;4142:6;4138:16;4131:4;4126:3;4122:14;4115:40;4178:73;4244:6;4228:14;4178:73;:::i;:::-;4164:87;;;4299:4;4292:5;4288:16;4282:23;4336:4;4331:3;4327:14;4419:1;4429:193;4443:4;4440:1;4437:11;4429:193;;;4519:13;;4515:2;4504:29;4490:44;;4567:4;4595:17;;;;4556:16;;;;4463:1;4456:9;4429:193;;;-1:-1:-1;4638:6:1;;3476:1174;-1:-1:-1;;;;;3476:1174:1:o;4655:859::-;4873:4;4921:2;4910:9;4906:18;4951:2;4940:9;4933:21;4974:6;5009;5003:13;5040:6;5032;5025:22;5078:2;5067:9;5063:18;5056:25;;5140:2;5130:6;5127:1;5123:14;5112:9;5108:30;5104:39;5090:53;;5178:2;5170:6;5166:15;5199:1;5209:276;5223:6;5220:1;5217:13;5209:276;;;5316:2;5312:7;5300:9;5292:6;5288:22;5284:36;5279:3;5272:49;5344:61;5398:6;5389;5383:13;5344:61;:::i;:::-;5334:71;-1:-1:-1;5440:2:1;5463:12;;;;5428:15;;;;;5245:1;5238:9;5209:276;;;-1:-1:-1;5502:6:1;;4655:859;-1:-1:-1;;;;;;4655:859:1:o;5519:297::-;5724:2;5713:9;5706:21;5687:4;5744:66;5806:2;5795:9;5791:18;5783:6;5744:66;:::i;6877:744::-;6931:5;6984:3;6977:4;6969:6;6965:17;6961:27;6951:55;;7002:1;6999;6992:12;6951:55;7042:6;7029:20;7069:64;7085:47;7125:6;7085:47;:::i;7069:64::-;7157:3;7181:6;7176:3;7169:19;7213:4;7208:3;7204:14;7197:21;;7274:4;7264:6;7261:1;7257:14;7249:6;7245:27;7241:38;7227:52;;7302:3;7294:6;7291:15;7288:35;;;7319:1;7316;7309:12;7288:35;7355:4;7347:6;7343:17;7369:221;7385:6;7380:3;7377:15;7369:221;;;7467:3;7454:17;7484:31;7509:5;7484:31;:::i;:::-;7528:18;;7575:4;7566:14;;;;7402;7369:221;;;-1:-1:-1;7608:7:1;6877:744;-1:-1:-1;;;;;6877:744:1:o;7626:1213::-;7743:6;7751;7804:2;7792:9;7783:7;7779:23;7775:32;7772:52;;;7820:1;7817;7810:12;7772:52;7860:9;7847:23;-1:-1:-1;;;;;7885:6:1;7882:30;7879:50;;;7925:1;7922;7915:12;7879:50;7948:22;;8001:4;7993:13;;7989:27;-1:-1:-1;7979:55:1;;8030:1;8027;8020:12;7979:55;8070:2;8057:16;8093:64;8109:47;8149:6;8109:47;:::i;8093:64::-;8179:3;8203:6;8198:3;8191:19;8235:4;8230:3;8226:14;8219:21;;8292:4;8282:6;8279:1;8275:14;8271:2;8267:23;8263:34;8249:48;;8320:7;8312:6;8309:19;8306:39;;;8341:1;8338;8331:12;8306:39;8373:4;8369:2;8365:13;8354:24;;8387:220;8403:6;8398:3;8395:15;8387:220;;;8485:3;8472:17;8502:30;8526:5;8502:30;:::i;:::-;8545:18;;8592:4;8420:14;;;;8583;;;;8387:220;;;8626:5;-1:-1:-1;;;;8684:4:1;8669:20;;8656:34;-1:-1:-1;;;;;8702:32:1;;8699:52;;;8747:1;8744;8737:12;8699:52;8770:63;8825:7;8814:8;8803:9;8799:24;8770:63;:::i;:::-;8760:73;;;7626:1213;;;;;:::o;8844:903::-;9092:2;9104:21;;;9174:13;;9077:18;;;9196:22;;;9044:4;;9275:15;;;9249:2;9234:18;;;9044:4;9318:403;9332:6;9329:1;9326:13;9318:403;;;9397:6;9391:13;9417:47;9460:3;9455:2;9449:9;6374:12;;6370:2;6359:28;6347:41;;6441:4;6430:16;;;6424:23;-1:-1:-1;;;;;6420:64:1;6404:14;;6397:88;6280:211;9417:47;9516:2;9508:11;;;9502:18;-1:-1:-1;;;;;9498:59:1;9493:2;9484:12;;;9477:81;;;;9604:11;;;9598:18;-1:-1:-1;;;;;9594:44:1;9587:4;9578:14;;9571:68;9696:15;;;;;9668:4;9659:14;;;;9635:1;9347:9;9318:403;;;-1:-1:-1;9738:3:1;;8844:903;-1:-1:-1;;;;;8844:903:1:o;9752:277::-;9819:6;9872:2;9860:9;9851:7;9847:23;9843:32;9840:52;;;9888:1;9885;9878:12;9840:52;9920:9;9914:16;9973:5;9966:13;9959:21;9952:5;9949:32;9939:60;;9995:1;9992;9985:12;10034:127;10095:10;10090:3;10086:20;10083:1;10076:31;10126:4;10123:1;10116:15;10150:4;10147:1;10140:15;10166:127;10227:10;10222:3;10218:20;10215:1;10208:31;10258:4;10255:1;10248:15;10282:4;10279:1;10272:15;10298:168;10371:9;;;10402;;10419:15;;;10413:22;;10399:37;10389:71;;10440:18;;:::i;10471:127::-;10532:10;10527:3;10523:20;10520:1;10513:31;10563:4;10560:1;10553:15;10587:4;10584:1;10577:15;10603:120;10643:1;10669;10659:35;;10674:18;;:::i;:::-;-1:-1:-1;10708:9:1;;10603:120::o;10728:125::-;10793:9;;;10814:10;;;10811:36;;;10827:18;;:::i;10858:243::-;-1:-1:-1;;;;;10973:42:1;;;10929;;;10925:91;;11028:44;;11025:70;;;11075:18;;:::i;11106:251::-;11176:6;11229:2;11217:9;11208:7;11204:23;11200:32;11197:52;;;11245:1;11242;11235:12;11197:52;11277:9;11271:16;11296:31;11321:5;11296:31;:::i;11362:227::-;11402:1;-1:-1:-1;;;;;11433:1:1;11429:42;11490:3;11480:37;;11497:18;;:::i;:::-;11579:3;-1:-1:-1;;;;;11539:1:1;11535:42;11531:52;11526:57;;;11362:227;;;;:::o;11594:317::-;-1:-1:-1;;;;;11679:42:1;;;11723;;;11675:91;11786:52;;;;11857:24;;;11847:58;;11885:18;;:::i;:::-;11847:58;11594:317;;;;:::o;11916:249::-;11985:6;12038:2;12026:9;12017:7;12013:23;12009:32;12006:52;;;12054:1;12051;12044:12;12006:52;12086:9;12080:16;12105:30;12129:5;12105:30;:::i;12170:241::-;12209:7;12288:1;12284:2;12273:17;12269:1;12265:2;12254:17;12250:41;12326:11;12322:2;12311:27;12300:38;;12369:11;12360:7;12357:24;12347:58;;12385:18;;:::i;12416:305::-;12455:1;12497;12493:2;12482:17;12534:1;12530:2;12519:17;12555:3;12545:37;;12562:18;;:::i;:::-;-1:-1:-1;;;;;;12598:48:1;;-1:-1:-1;;12648:15:1;;12594:70;12591:96;;;12667:18;;:::i;:::-;12701:14;;;12416:305;-1:-1:-1;;;12416:305:1:o;12726:245::-;12824:2;12794:17;;;12813;;;;12790:41;12905:34;12846:44;;-1:-1:-1;;;;;;12892:49:1;;12843:99;12840:125;;;12945:18;;:::i;13184:315::-;-1:-1:-1;;;;;13376:32:1;;;;13358:51;;-1:-1:-1;;;;;13445:47:1;13440:2;13425:18;;13418:75;13346:2;13331:18;;13184:315::o;13504:703::-;13605:6;13665:2;13653:9;13644:7;13640:23;13636:32;13680:2;13677:22;;;13695:1;13692;13685:12;13677:22;-1:-1:-1;13764:2:1;13758:9;;;13794:15;;-1:-1:-1;;;;;13824:34:1;;13860:22;;;13821:62;13818:88;;;13886:18;;:::i;:::-;13922:2;13915:22;13959:16;;13984:30;13959:16;13984:30;:::i;:::-;14023:21;;14089:2;14074:18;;14068:25;14102:33;14068:25;14102:33;:::i;:::-;14163:2;14151:15;;14144:32;14155:6;13504:703;-1:-1:-1;;;13504:703:1:o;14212:184::-;14282:6;14335:2;14323:9;14314:7;14310:23;14306:32;14303:52;;;14351:1;14348;14341:12;14303:52;-1:-1:-1;14374:16:1;;14212:184;-1:-1:-1;14212:184:1:o;14401:128::-;14468:9;;;14489:11;;;14486:37;;;14503:18;;:::i;14534:237::-;14573:3;-1:-1:-1;;;;;14610:5:1;14606:46;-1:-1:-1;;;;;14667:7:1;14664:47;14661:73;;14714:18;;:::i;:::-;14763:1;14750:15;;14534:237;-1:-1:-1;;14534:237:1:o
Swarm Source
ipfs://d93b3554b029b9083dc4d8c56a0a7db302c903c8a8c3242f10ef109191dee5f9
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in FRAX
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.