Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 169 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Collect Fee Toke... | 21262607 | 462 days ago | IN | 0 ETH | 0.00447406 | ||||
| Collect Fee Toke... | 21248272 | 464 days ago | IN | 0 ETH | 0.00769818 | ||||
| Collect Fee Toke... | 21241108 | 465 days ago | IN | 0 ETH | 0.00698351 | ||||
| Collect Fee Toke... | 21233945 | 466 days ago | IN | 0 ETH | 0.01066001 | ||||
| Collect Fee Toke... | 21226786 | 467 days ago | IN | 0 ETH | 0.00637739 | ||||
| Collect Fee Toke... | 21219710 | 468 days ago | IN | 0 ETH | 0.00581814 | ||||
| Collect Fee Toke... | 21189960 | 472 days ago | IN | 0 ETH | 0.01186064 | ||||
| Collect Fee Toke... | 21162274 | 476 days ago | IN | 0 ETH | 0.01222864 | ||||
| Collect Fee Toke... | 21155099 | 477 days ago | IN | 0 ETH | 0.01000496 | ||||
| Collect Fee Toke... | 21147931 | 478 days ago | IN | 0 ETH | 0.00478039 | ||||
| Collect Fee Toke... | 21140758 | 479 days ago | IN | 0 ETH | 0.00643382 | ||||
| Collect Fee Toke... | 21133610 | 480 days ago | IN | 0 ETH | 0.00752277 | ||||
| Collect Fee Toke... | 21126448 | 481 days ago | IN | 0 ETH | 0.02325122 | ||||
| Collect Fee Toke... | 21119283 | 482 days ago | IN | 0 ETH | 0.00186365 | ||||
| Collect Fee Toke... | 21112117 | 483 days ago | IN | 0 ETH | 0.00381675 | ||||
| Collect Fee Toke... | 21104947 | 484 days ago | IN | 0 ETH | 0.00283507 | ||||
| Collect Fee Toke... | 21097796 | 485 days ago | IN | 0 ETH | 0.00217295 | ||||
| Collect Fee Toke... | 21090630 | 486 days ago | IN | 0 ETH | 0.00382094 | ||||
| Collect Fee Toke... | 21083453 | 487 days ago | IN | 0 ETH | 0.00528638 | ||||
| Collect Fee Toke... | 21076298 | 488 days ago | IN | 0 ETH | 0.01008246 | ||||
| Collect Fee Toke... | 21069128 | 489 days ago | IN | 0 ETH | 0.01022997 | ||||
| Collect Fee Toke... | 21061970 | 490 days ago | IN | 0 ETH | 0.00477908 | ||||
| Collect Fee Toke... | 21054798 | 491 days ago | IN | 0 ETH | 0.00266817 | ||||
| Collect Fee Toke... | 21047633 | 492 days ago | IN | 0 ETH | 0.0032715 | ||||
| Collect Fee Toke... | 21040461 | 493 days ago | IN | 0 ETH | 0.0034633 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
AssetFeeManager
Compiler Version
v0.8.25+commit.b61c2a91
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.25;
import "./Interface.sol";
import {AssetController} from "./AssetController.sol";
import {Utils} from './Utils.sol';
import "forge-std/console.sol";
contract AssetFeeManager is AssetController, IAssetFeeManager {
Request[] burnFeeRequests;
event AddBurnFeeRequest(uint nonce);
event RejectBurnFeeRequest(uint nonce);
event ConfirmBurnFeeRequest(uint nonce);
constructor(address owner, address factoryAddress_)
AssetController(owner, factoryAddress_) {
}
function setFee(uint256 assetID, uint256 fee) external onlyOwner {
IAssetFactory factory = IAssetFactory(factoryAddress);
IAssetToken assetToken = IAssetToken(factory.assetTokens(assetID));
require(assetToken.feeCollected(), "has fee not collected");
require(assetToken.hasRole(assetToken.FEEMANAGER_ROLE(), address(this)), "not a fee manager");
assetToken.setFee(fee);
}
function collectFeeTokenset(uint256 assetID) external onlyOwner {
IAssetFactory factory = IAssetFactory(factoryAddress);
IAssetToken assetToken = IAssetToken(factory.assetTokens(assetID));
require(assetToken.hasRole(assetToken.FEEMANAGER_ROLE(), address(this)), "not a fee manager");
require(assetToken.rebalancing() == false, "is rebalancing");
require(assetToken.issuing() == false, "is issuing");
assetToken.collectFeeTokenset();
}
function getBurnFeeRequestLength() external view returns (uint256) {
return burnFeeRequests.length;
}
function getBurnFeeRequest(uint256 nonce) external view returns (Request memory) {
return burnFeeRequests[nonce];
}
function addBurnFeeRequest(uint256 assetID, OrderInfo memory orderInfo) external onlyOwner returns (uint256) {
IAssetFactory factory = IAssetFactory(factoryAddress);
address assetTokenAddress = factory.assetTokens(assetID);
IAssetToken assetToken = IAssetToken(assetTokenAddress);
address swapAddress = factory.swap();
ISwap swap = ISwap(swapAddress);
require(assetToken.hasRole(assetToken.FEEMANAGER_ROLE(), address(this)), "not a fee manager");
require(assetToken.burningFee() == false, "is burning fee");
require(swap.checkOrderInfo(orderInfo) == 0, "order not valid");
Token[] memory sellTokenset = Utils.muldivTokenset(orderInfo.order.inTokenset, orderInfo.order.inAmount, 10**8);
require(Utils.containTokenset(assetToken.getFeeTokenset(), sellTokenset), "not enough fee to sell");
for (uint i = 0; i < orderInfo.order.outTokenset.length; i++) {
require(Utils.stringToAddress(orderInfo.order.outAddressList[i]) == factory.vault(), "fee receiver not match");
require(bytes32(bytes(orderInfo.order.outTokenset[i].chain)) == bytes32(bytes(factory.chain())), "outTokenset chain not match");
}
swap.addSwapRequest(orderInfo, false, true);
burnFeeRequests.push(Request({
nonce: burnFeeRequests.length,
requester: msg.sender,
assetTokenAddress: assetTokenAddress,
amount: 0,
swapAddress: swapAddress,
orderHash: orderInfo.orderHash,
status: RequestStatus.PENDING,
requestTimestamp: block.timestamp,
issueFee: 0
}));
assetToken.lockBurnFee();
emit AddBurnFeeRequest(burnFeeRequests.length - 1);
return burnFeeRequests.length - 1;
}
function rejectBurnFeeRequest(uint nonce) external onlyOwner {
require(nonce < burnFeeRequests.length);
Request memory burnFeeRequest = burnFeeRequests[nonce];
require(burnFeeRequest.status == RequestStatus.PENDING);
ISwap swap = ISwap(burnFeeRequest.swapAddress);
SwapRequest memory swapRequest = swap.getSwapRequest(burnFeeRequest.orderHash);
require(swapRequest.status == SwapRequestStatus.REJECTED);
IAssetToken assetToken = IAssetToken(burnFeeRequest.assetTokenAddress);
assetToken.unlockBurnFee();
burnFeeRequests[nonce].status = RequestStatus.REJECTED;
emit RejectBurnFeeRequest(nonce);
}
function confirmBurnFeeRequest(uint nonce, OrderInfo memory orderInfo, bytes32[] memory inTxHashs) external onlyOwner {
require(nonce < burnFeeRequests.length);
Request memory burnFeeRequest = burnFeeRequests[nonce];
checkRequestOrderInfo(burnFeeRequest, orderInfo);
require(burnFeeRequest.status == RequestStatus.PENDING);
ISwap swap = ISwap(burnFeeRequest.swapAddress);
SwapRequest memory swapRequest = swap.getSwapRequest(burnFeeRequest.orderHash);
require(swapRequest.status == SwapRequestStatus.MAKER_CONFIRMED);
swap.confirmSwapRequest(orderInfo, inTxHashs);
IAssetToken assetToken = IAssetToken(burnFeeRequest.assetTokenAddress);
Order memory order = orderInfo.order;
Token[] memory sellTokenset = Utils.muldivTokenset(order.inTokenset, order.inAmount, 10**8);
assetToken.burnFeeTokenset(sellTokenset);
burnFeeRequests[nonce].status = RequestStatus.CONFIRMED;
assetToken.unlockBurnFee();
emit ConfirmBurnFeeRequest(nonce);
}
}// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.25;
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {IAccessControl} from "@openzeppelin/contracts/access/IAccessControl.sol";
import {IAccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol";
struct Token {
string chain;
string symbol;
string addr;
uint8 decimals;
uint256 amount;
}
struct Asset {
uint256 id;
string name;
string symbol;
Token[] tokenset;
}
struct Order {
address maker;
uint256 nonce;
Token[] inTokenset;
Token[] outTokenset;
string[] inAddressList;
string[] outAddressList;
uint256 inAmount;
uint256 outAmount;
uint256 deadline;
}
struct OrderInfo {
Order order;
bytes32 orderHash;
bytes orderSign;
}
struct Range {
uint256 min;
uint256 max;
}
enum SwapRequestStatus {NONE, PENDING, MAKER_CONFIRMED, CONFIRMED, REJECTED}
struct SwapRequest {
bytes32[] inTxHashs;
bytes32[] outTxHashs;
SwapRequestStatus status;
address requester;
bool inByContract;
bool outByContract;
uint256 blocknumber;
}
enum RequestStatus {NONE, PENDING, CONFIRMED, REJECTED}
struct Request {
uint nonce;
address requester;
address assetTokenAddress;
uint amount;
address swapAddress;
bytes32 orderHash;
RequestStatus status;
uint requestTimestamp;
uint issueFee;
}
interface IAssetToken is IERC20, IAccessControl {
function decimals() external view returns (uint8);
// id
function id() external returns (uint256);
// roles
function ISSUER_ROLE() external returns (bytes32);
function REBALANCER_ROLE() external returns (bytes32);
function FEEMANAGER_ROLE() external returns (bytes32);
// tokenset
function getTokenset() external view returns (Token[] memory);
function initTokenset(Token[] memory tokenset) external;
function getBasket() external view returns (Token[] memory);
// issue
function lockIssue() external;
function issuing() external view returns (bool);
function unlockIssue() external;
function mint(address account, uint amount) external;
function burn(uint amount) external;
// rebalance
function lockRebalance() external;
function rebalancing() external view returns (bool);
function unlockRebalance() external;
function rebalance(Token[] memory inBasket, Token[] memory outBasket) external;
// fee
function feeDecimals() external view returns (uint);
function maxFee() external view returns (uint);
function fee() external view returns (uint);
function setFee(uint fee_) external;
function lastCollectTimestamp() external view returns (uint);
function feeCollected() external view returns (bool);
function getFeeTokenset() external view returns (Token[] memory);
function collectFeeTokenset() external;
function lockBurnFee() external;
function burningFee() external view returns (bool);
function unlockBurnFee() external;
function burnFeeTokenset(Token[] memory feeTokenset) external;
}
interface IAssetFactory {
function swap() external view returns (address);
function vault() external view returns (address);
function chain() external view returns (string memory);
// asset tokens
function createAssetToken(Asset memory asset, uint maxFee, address issuer, address rebalancer, address feeMamanger) external returns (address);
function assetTokens(uint assetID) external view returns (address);
function hasAssetID(uint assetID) external view returns (bool);
function getAssetIDs() external view returns (uint[] memory);
}
interface ISwap is IAccessControl {
function checkOrderInfo(OrderInfo memory orderInfo) external view returns (uint);
function getOrderHashs() external view returns (bytes32[] memory);
function getOrderHashLength() external view returns (uint256);
function getOrderHash(uint256 idx) external view returns (bytes32);
function getSwapRequest(bytes32 orderHash) external view returns (SwapRequest memory);
function addSwapRequest(OrderInfo memory orderInfo, bool inByContract, bool outByContract) external;
function makerConfirmSwapRequest(OrderInfo memory orderInfo, bytes32[] memory outTxHashs) external;
function makerRejectSwapRequest(OrderInfo memory orderInfo) external;
function rollbackSwapRequest(OrderInfo memory orderInfo) external;
function confirmSwapRequest(OrderInfo memory orderInfo, bytes32[] memory inTxHashs) external;
function setTakerAddresses(string[] memory takerReceivers_, string[] memory takerSenders_) external;
function getTakerAddresses() external view returns (string[] memory receivers, string[] memory senders);
}
interface IAssetController {
function factoryAddress() external returns (address);
}
interface IAssetIssuer is IAssetController {
// mint
function getMintRequestLength() external view returns (uint256);
function getMintRequest(uint256 nonce) external view returns (Request memory);
function addMintRequest(uint256 assetID, OrderInfo memory orderInfo) external returns (uint);
function rejectMintRequest(uint256 nonce, OrderInfo memory orderInfo) external;
function confirmMintRequest(uint nonce, OrderInfo memory orderInfo, bytes32[] memory inTxHashs) external;
// redeem
function getRedeemRequestLength() external view returns (uint256);
function getRedeemRequest(uint256 nonce) external view returns (Request memory);
function addRedeemRequest(uint256 assetID, OrderInfo memory orderInfo) external returns (uint256);
function rejectRedeemRequest(uint256 nonce) external;
function confirmRedeemRequest(uint nonce, OrderInfo memory orderInfo, bytes32[] memory inTxHashs) external;
// manage participants
function isParticipant(uint256 assetID, address participant) external view returns (bool);
function getParticipants(uint256 assetID) external view returns (address[] memory);
function getParticipantLength(uint256 assetID) external view returns (uint256);
function getParticipant(uint256 assetID, uint256 idx) external view returns (address);
function addParticipant(uint256 assetID, address participant) external;
function removeParticipant(uint256 assetID, address participant) external;
// fee
function setIssueFee(uint256 assetID, uint256 issueFee) external;
function getIssueFee(uint256 assetID) external view returns (uint256);
function feeDecimals() external view returns (uint256);
// issue amount range
function getIssueAmountRange(uint256 assetID) external view returns (Range memory);
function setIssueAmountRange(uint256 assetID, Range calldata issueAmountRange) external;
}
interface IAssetRebalancer is IAssetController {
function getRebalanceRequestLength() external view returns (uint256);
function getRebalanceRequest(uint256 nonce) external view returns (Request memory);
function addRebalanceRequest(uint256 assetID, Token[] memory basket, OrderInfo memory orderInfo) external returns (uint256);
function rejectRebalanceRequest(uint256 nonce) external;
function confirmRebalanceRequest(uint nonce, OrderInfo memory orderInfo, bytes32[] memory inTxHashs) external;
}
interface IAssetFeeManager is IAssetController {
function setFee(uint256 assetID, uint256 fee) external;
function collectFeeTokenset(uint256 assetID) external;
function getBurnFeeRequestLength() external view returns (uint256);
function getBurnFeeRequest(uint256 nonce) external view returns (Request memory);
function addBurnFeeRequest(uint256 assetID, OrderInfo memory orderInfo) external returns (uint256);
function rejectBurnFeeRequest(uint256 nonce) external;
function confirmBurnFeeRequest(uint nonce, OrderInfo memory orderInfo, bytes32[] memory inTxHashs) external;
}// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.25;
import './Interface.sol';
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
contract AssetController is Ownable, IAssetController {
address public factoryAddress;
constructor(address owner, address factoryAddress_) Ownable(owner) {
factoryAddress = factoryAddress_;
}
function checkRequestOrderInfo(Request memory request, OrderInfo memory orderInfo) internal pure {
require(request.orderHash == orderInfo.orderHash, "order hash not match");
require(orderInfo.orderHash == keccak256(abi.encode(orderInfo.order)), "order hash invalid");
}
function rollbackSwapRequest(OrderInfo memory orderInfo) external onlyOwner {
ISwap(IAssetFactory(factoryAddress).swap()).rollbackSwapRequest(orderInfo);
}
}// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.25;
import './Interface.sol';
library Utils {
function stringToAddress(string memory str) internal pure returns (address) {
bytes memory strBytes = bytes(str);
require(strBytes.length == 42, "Invalid address length");
bytes memory addrBytes = new bytes(20);
for (uint i = 0; i < 20; i++) {
addrBytes[i] = bytes1(hexCharToByte(strBytes[2 + i * 2]) * 16 + hexCharToByte(strBytes[3 + i * 2]));
}
return address(uint160(bytes20(addrBytes)));
}
function hexCharToByte(bytes1 char) internal pure returns (uint8) {
uint8 byteValue = uint8(char);
if (byteValue >= uint8(bytes1('0')) && byteValue <= uint8(bytes1('9'))) {
return byteValue - uint8(bytes1('0'));
} else if (byteValue >= uint8(bytes1('a')) && byteValue <= uint8(bytes1('f'))) {
return 10 + byteValue - uint8(bytes1('a'));
} else if (byteValue >= uint8(bytes1('A')) && byteValue <= uint8(bytes1('F'))) {
return 10 + byteValue - uint8(bytes1('A'));
}
revert("Invalid hex character");
}
function containTokenset(Token[] memory a, Token[] memory b) internal pure returns (bool) {
uint k;
for (uint i = 0; i < b.length; i++) {
k = a.length;
for (uint j = 0; j < a.length; j++) {
if (isSameToken(b[i], a[j])) {
if (a[j].amount < b[i].amount) {
return false;
}
k = j;
break;
}
}
if (k == a.length) {
return false;
}
}
return true;
}
function subTokenset(Token[] memory a_, Token[] memory b) internal pure returns (Token[] memory) {
Token[] memory a = copyTokenset(a_);
uint newLength = a.length;
uint k;
for (uint i = 0; i < b.length; i++) {
k = a.length;
for (uint j = 0; j < a.length; j++) {
if (isSameToken(b[i], a[j])) {
require(a[j].amount >= b[i].amount, "a.amount less than b.amount");
a[j].amount -= b[i].amount;
if (a[j].amount == 0) {
newLength -= 1;
}
k = j;
break;
}
}
require(k < a.length, "a not contains b");
}
Token[] memory res = new Token[](newLength);
k = 0;
for (uint i = 0; i < a.length; i++) {
if (a[i].amount > 0) {
res[k++] = a[i];
}
}
return res;
}
function addTokenset(Token[] memory a_, Token[] memory b_) internal pure returns (Token[] memory) {
Token[] memory a = copyTokenset(a_);
Token[] memory b = copyTokenset(b_);
uint k;
uint newCnt = 0;
for (uint i = 0; i < b.length; i++) {
k = a.length;
for (uint j = 0; j < a.length; j++) {
if (isSameToken(a[j], b[i])) {
a[j].amount += b[i].amount;
k = j;
break;
}
}
if (k == a.length) {
if (newCnt < i) {
b[newCnt] = b[i];
}
newCnt += 1;
}
}
Token[] memory res = new Token[](a.length + newCnt);
for (uint i = 0; i < a.length; i++) {
res[i] = a[i];
}
for (uint i = 0; i < newCnt; i++) {
res[a.length + i] = b[i];
}
return res;
}
function copyTokenset(Token[] memory a) internal pure returns (Token[] memory) {
Token[] memory b = new Token[](a.length);
for (uint i = 0; i < a.length; i++) {
b[i] = Token({
chain: a[i].chain,
symbol: a[i].symbol,
addr: a[i].addr,
decimals: a[i].decimals,
amount: a[i].amount
});
}
return b;
}
function muldivTokenset(Token[] memory a_, uint mul_factor, uint div_facotr) internal pure returns (Token[] memory) {
Token[] memory a = copyTokenset(a_);
for (uint i = 0; i < a.length; i++) {
a[i].amount = a[i].amount * mul_factor / div_facotr;
}
return a;
}
function isSameToken(Token memory a, Token memory b) internal pure returns (bool) {
return calcTokenHash(a) == calcTokenHash(b);
}
function calcTokenHash(Token memory token) internal pure returns (bytes32) {
return keccak256(abi.encodePacked(token.chain, token.symbol, token.addr, token.decimals));
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.4.22 <0.9.0;
library console {
address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);
function _sendLogPayload(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 view {
_sendLogPayload(abi.encodeWithSignature("log()"));
}
function logInt(int p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(int)", p0));
}
function logUint(uint p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint)", p0));
}
function logString(string memory p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function logBool(bool p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
}
function logAddress(address p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
}
function logBytes(bytes memory p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes)", p0));
}
function logBytes1(bytes1 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0));
}
function logBytes2(bytes2 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0));
}
function logBytes3(bytes3 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0));
}
function logBytes4(bytes4 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0));
}
function logBytes5(bytes5 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0));
}
function logBytes6(bytes6 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0));
}
function logBytes7(bytes7 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0));
}
function logBytes8(bytes8 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0));
}
function logBytes9(bytes9 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0));
}
function logBytes10(bytes10 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0));
}
function logBytes11(bytes11 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0));
}
function logBytes12(bytes12 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0));
}
function logBytes13(bytes13 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0));
}
function logBytes14(bytes14 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0));
}
function logBytes15(bytes15 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0));
}
function logBytes16(bytes16 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0));
}
function logBytes17(bytes17 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0));
}
function logBytes18(bytes18 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0));
}
function logBytes19(bytes19 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0));
}
function logBytes20(bytes20 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0));
}
function logBytes21(bytes21 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0));
}
function logBytes22(bytes22 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0));
}
function logBytes23(bytes23 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0));
}
function logBytes24(bytes24 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0));
}
function logBytes25(bytes25 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0));
}
function logBytes26(bytes26 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0));
}
function logBytes27(bytes27 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0));
}
function logBytes28(bytes28 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0));
}
function logBytes29(bytes29 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0));
}
function logBytes30(bytes30 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0));
}
function logBytes31(bytes31 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0));
}
function logBytes32(bytes32 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0));
}
function log(uint p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint)", p0));
}
function log(string memory p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function log(bool p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
}
function log(address p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
}
function log(uint p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint)", p0, p1));
}
function log(uint p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string)", p0, p1));
}
function log(uint p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool)", p0, p1));
}
function log(uint p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address)", p0, p1));
}
function log(string memory p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint)", p0, p1));
}
function log(string memory p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1));
}
function log(string memory p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1));
}
function log(string memory p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1));
}
function log(bool p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint)", p0, p1));
}
function log(bool p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1));
}
function log(bool p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1));
}
function log(bool p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1));
}
function log(address p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint)", p0, p1));
}
function log(address p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1));
}
function log(address p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1));
}
function log(address p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1));
}
function log(uint p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2));
}
function log(uint p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2));
}
function log(uint p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2));
}
function log(uint p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2));
}
function log(uint p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2));
}
function log(uint p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2));
}
function log(uint p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2));
}
function log(uint p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2));
}
function log(uint p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2));
}
function log(uint p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2));
}
function log(uint p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2));
}
function log(uint p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2));
}
function log(uint p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2));
}
function log(uint p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2));
}
function log(uint p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2));
}
function log(uint p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2));
}
function log(string memory p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2));
}
function log(string memory p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2));
}
function log(string memory p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2));
}
function log(string memory p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2));
}
function log(string memory p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", p0, p1, p2));
}
function log(string memory p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2));
}
function log(string memory p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2));
}
function log(string memory p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2));
}
function log(string memory p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", p0, p1, p2));
}
function log(string memory p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2));
}
function log(string memory p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2));
}
function log(string memory p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2));
}
function log(string memory p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", p0, p1, p2));
}
function log(string memory p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2));
}
function log(string memory p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2));
}
function log(string memory p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2));
}
function log(bool p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2));
}
function log(bool p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2));
}
function log(bool p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2));
}
function log(bool p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2));
}
function log(bool p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", p0, p1, p2));
}
function log(bool p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2));
}
function log(bool p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2));
}
function log(bool p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2));
}
function log(bool p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", p0, p1, p2));
}
function log(bool p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2));
}
function log(bool p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2));
}
function log(bool p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2));
}
function log(bool p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", p0, p1, p2));
}
function log(bool p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2));
}
function log(bool p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2));
}
function log(bool p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2));
}
function log(address p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2));
}
function log(address p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2));
}
function log(address p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2));
}
function log(address p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2));
}
function log(address p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", p0, p1, p2));
}
function log(address p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2));
}
function log(address p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2));
}
function log(address p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2));
}
function log(address p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", p0, p1, p2));
}
function log(address p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2));
}
function log(address p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2));
}
function log(address p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2));
}
function log(address p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", p0, p1, p2));
}
function log(address p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2));
}
function log(address p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2));
}
function log(address p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2));
}
function log(uint p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {
_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 view {
_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 view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, string memory p3) internal view {
_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 view {
_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 view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, string memory p3) internal view {
_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 view {
_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 view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, string memory p3) internal view {
_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 view {
_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 view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, string memory p3) internal view {
_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 view {
_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 view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, string memory p3) internal view {
_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 view {
_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 view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, string memory p3) internal view {
_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 view {
_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 view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3));
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
/**
* @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 value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` 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 value) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/IAccessControl.sol)
pragma solidity ^0.8.20;
/**
* @dev External interface of AccessControl declared to support ERC165 detection.
*/
interface IAccessControl {
/**
* @dev The `account` is missing a role.
*/
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
/**
* @dev The caller of a function is not the expected one.
*
* NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.
*/
error AccessControlBadConfirmation();
/**
* @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
*
* `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
* {RoleAdminChanged} not being emitted signaling this.
*/
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
/**
* @dev Emitted when `account` is granted `role`.
*
* `sender` is the account that originated the contract call, an admin role
* bearer except when using {AccessControl-_setupRole}.
*/
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
/**
* @dev Emitted when `account` is revoked `role`.
*
* `sender` is the account that originated the contract call:
* - if using `revokeRole`, it is the admin role bearer
* - if using `renounceRole`, it is the role bearer (i.e. `account`)
*/
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
/**
* @dev Returns `true` if `account` has been granted `role`.
*/
function hasRole(bytes32 role, address account) external view returns (bool);
/**
* @dev Returns the admin role that controls `role`. See {grantRole} and
* {revokeRole}.
*
* To change a role's admin, use {AccessControl-_setRoleAdmin}.
*/
function getRoleAdmin(bytes32 role) external view returns (bytes32);
/**
* @dev Grants `role` to `account`.
*
* If `account` had not been already granted `role`, emits a {RoleGranted}
* event.
*
* Requirements:
*
* - the caller must have ``role``'s admin role.
*/
function grantRole(bytes32 role, address account) external;
/**
* @dev Revokes `role` from `account`.
*
* If `account` had been granted `role`, emits a {RoleRevoked} event.
*
* Requirements:
*
* - the caller must have ``role``'s admin role.
*/
function revokeRole(bytes32 role, address account) external;
/**
* @dev Revokes `role` from the calling account.
*
* Roles are often managed via {grantRole} and {revokeRole}: this function's
* purpose is to provide a mechanism for accounts to lose their privileges
* if they are compromised (such as when a trusted device is misplaced).
*
* If the calling account had been granted `role`, emits a {RoleRevoked}
* event.
*
* Requirements:
*
* - the caller must be `callerConfirmation`.
*/
function renounceRole(bytes32 role, address callerConfirmation) external;
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/extensions/IAccessControlEnumerable.sol)
pragma solidity ^0.8.20;
import {IAccessControl} from "../IAccessControl.sol";
/**
* @dev External interface of AccessControlEnumerable declared to support ERC165 detection.
*/
interface IAccessControlEnumerable is IAccessControl {
/**
* @dev Returns one of the accounts that have `role`. `index` must be a
* value between 0 and {getRoleMemberCount}, non-inclusive.
*
* Role bearers are not sorted in any particular way, and their ordering may
* change at any point.
*
* WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure
* you perform all queries on the same block. See the following
* https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]
* for more information.
*/
function getRoleMember(bytes32 role, uint256 index) external view returns (address);
/**
* @dev Returns the number of accounts that have `role`. Can be used
* together with {getRoleMember} to enumerate all bearers of a role.
*/
function getRoleMemberCount(bytes32 role) external view returns (uint256);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}{
"remappings": [
"forge-std/=lib/forge-std/src/",
"@openzeppelin/=lib/openzeppelin-contracts/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "paris",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"factoryAddress_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"AddBurnFeeRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"ConfirmBurnFeeRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"RejectBurnFeeRequest","type":"event"},{"inputs":[{"internalType":"uint256","name":"assetID","type":"uint256"},{"components":[{"components":[{"internalType":"address","name":"maker","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"components":[{"internalType":"string","name":"chain","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"addr","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Token[]","name":"inTokenset","type":"tuple[]"},{"components":[{"internalType":"string","name":"chain","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"addr","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Token[]","name":"outTokenset","type":"tuple[]"},{"internalType":"string[]","name":"inAddressList","type":"string[]"},{"internalType":"string[]","name":"outAddressList","type":"string[]"},{"internalType":"uint256","name":"inAmount","type":"uint256"},{"internalType":"uint256","name":"outAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct Order","name":"order","type":"tuple"},{"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"internalType":"bytes","name":"orderSign","type":"bytes"}],"internalType":"struct OrderInfo","name":"orderInfo","type":"tuple"}],"name":"addBurnFeeRequest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assetID","type":"uint256"}],"name":"collectFeeTokenset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"components":[{"components":[{"internalType":"address","name":"maker","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"components":[{"internalType":"string","name":"chain","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"addr","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Token[]","name":"inTokenset","type":"tuple[]"},{"components":[{"internalType":"string","name":"chain","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"addr","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Token[]","name":"outTokenset","type":"tuple[]"},{"internalType":"string[]","name":"inAddressList","type":"string[]"},{"internalType":"string[]","name":"outAddressList","type":"string[]"},{"internalType":"uint256","name":"inAmount","type":"uint256"},{"internalType":"uint256","name":"outAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct Order","name":"order","type":"tuple"},{"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"internalType":"bytes","name":"orderSign","type":"bytes"}],"internalType":"struct OrderInfo","name":"orderInfo","type":"tuple"},{"internalType":"bytes32[]","name":"inTxHashs","type":"bytes32[]"}],"name":"confirmBurnFeeRequest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factoryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"getBurnFeeRequest","outputs":[{"components":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"address","name":"assetTokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"swapAddress","type":"address"},{"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"internalType":"enum RequestStatus","name":"status","type":"uint8"},{"internalType":"uint256","name":"requestTimestamp","type":"uint256"},{"internalType":"uint256","name":"issueFee","type":"uint256"}],"internalType":"struct Request","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnFeeRequestLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"rejectBurnFeeRequest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"maker","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"components":[{"internalType":"string","name":"chain","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"addr","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Token[]","name":"inTokenset","type":"tuple[]"},{"components":[{"internalType":"string","name":"chain","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"addr","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Token[]","name":"outTokenset","type":"tuple[]"},{"internalType":"string[]","name":"inAddressList","type":"string[]"},{"internalType":"string[]","name":"outAddressList","type":"string[]"},{"internalType":"uint256","name":"inAmount","type":"uint256"},{"internalType":"uint256","name":"outAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct Order","name":"order","type":"tuple"},{"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"internalType":"bytes","name":"orderSign","type":"bytes"}],"internalType":"struct OrderInfo","name":"orderInfo","type":"tuple"}],"name":"rollbackSwapRequest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assetID","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b50604051612eff380380612eff83398101604081905261002f916100ff565b8181816001600160a01b03811661006057604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61006981610093565b50600180546001600160a01b0319166001600160a01b039290921691909117905550610132915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146100fa57600080fd5b919050565b6000806040838503121561011257600080fd5b61011b836100e3565b9150610129602084016100e3565b90509250929050565b612dbe806101416000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063966dae0e11610071578063966dae0e14610138578063a3a288481461014b578063b8da95001461015e578063e4c26b961461017e578063e60eb35214610191578063f2fde38b146101a457600080fd5b806342470364146100b957806352f7c988146100ce578063598ff850146100e1578063715018a6146100f45780638792985c146100fc5780638da5cb5b14610113575b600080fd5b6100cc6100c73660046122fb565b6101b7565b005b6100cc6100dc3660046123bd565b61052c565b6100cc6100ef3660046123df565b6107a8565b6100cc610aad565b6002545b6040519081526020015b60405180910390f35b6000546001600160a01b03165b6040516001600160a01b03909116815260200161010a565b600154610120906001600160a01b031681565b6100cc6101593660046123f8565b610ac1565b61017161016c3660046123df565b610ba0565b60405161010a919061246c565b61010061018c3660046124eb565b610cbd565b6100cc61019f3660046123df565b611509565b6100cc6101b2366004612531565b61178e565b6101bf6117cc565b60025483106101cd57600080fd5b6000600284815481106101e2576101e261254e565b6000918252602091829020604080516101208101825260099093029091018054835260018101546001600160a01b03908116948401949094526002810154841691830191909152600380820154606084015260048201549093166080830152600581015460a083015260068101549192909160c084019160ff9091169081111561026e5761026e612434565b600381111561027f5761027f612434565b81526020016007820154815260200160088201548152505090506102a381846117f9565b60018160c0015160038111156102bb576102bb612434565b146102c557600080fd5b608081015160a082015160405163e22ae4cd60e01b81526000916001600160a01b0384169163e22ae4cd916103009160040190815260200190565b600060405180830381865afa15801561031d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261034591908101906125ed565b905060028160400151600481111561035f5761035f612434565b1461036957600080fd5b6040516398ebca2160e01b81526001600160a01b038316906398ebca2190610397908890889060040161290a565b600060405180830381600087803b1580156103b157600080fd5b505af11580156103c5573d6000803e3d6000fd5b50505060408085015187519182015160c08301519193506000916103ee91906305f5e1006118ba565b60405163719d90f960e01b81529091506001600160a01b0384169063719d90f99061041d908490600401612954565b600060405180830381600087803b15801561043757600080fd5b505af115801561044b573d6000803e3d6000fd5b505050506002808a815481106104635761046361254e565b60009182526020909120600660099092020101805460ff1916600183600381111561049057610490612434565b0217905550826001600160a01b0316638813e96e6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104d057600080fd5b505af11580156104e4573d6000803e3d6000fd5b505050507ff37a1c7c7a7caea25d767574aae7ebc9b02ce4edec7ce381bc4597c1100b2a5f8960405161051991815260200190565b60405180910390a1505050505050505050565b6105346117cc565b6001546040516373bacc5b60e01b8152600481018490526001600160a01b039091169060009082906373bacc5b90602401602060405180830381865afa158015610582573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a69190612967565b9050806001600160a01b0316636ca7f95c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060a9190612984565b6106535760405162461bcd60e51b81526020600482015260156024820152741a185cc8199959481b9bdd0818dbdb1b1958dd1959605a1b60448201526064015b60405180910390fd5b806001600160a01b03166391d14854826001600160a01b0316631ca54c956040518163ffffffff1660e01b81526004016020604051808303816000875af11580156106a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c6919061299f565b6040516001600160e01b031960e084901b1681526004810191909152306024820152604401602060405180830381865afa158015610708573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072c9190612984565b6107485760405162461bcd60e51b815260040161064a906129b8565b6040516369fe0e2d60e01b8152600481018490526001600160a01b038216906369fe0e2d90602401600060405180830381600087803b15801561078a57600080fd5b505af115801561079e573d6000803e3d6000fd5b5050505050505050565b6107b06117cc565b6001546040516373bacc5b60e01b8152600481018390526001600160a01b039091169060009082906373bacc5b90602401602060405180830381865afa1580156107fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108229190612967565b9050806001600160a01b03166391d14854826001600160a01b0316631ca54c956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610873573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610897919061299f565b6040516001600160e01b031960e084901b1681526004810191909152306024820152604401602060405180830381865afa1580156108d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fd9190612984565b6109195760405162461bcd60e51b815260040161064a906129b8565b806001600160a01b031663959b13d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b9190612984565b156109b95760405162461bcd60e51b815260206004820152600e60248201526d697320726562616c616e63696e6760901b604482015260640161064a565b806001600160a01b031663018d01b86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190612984565b15610a555760405162461bcd60e51b815260206004820152600a60248201526969732069737375696e6760b01b604482015260640161064a565b806001600160a01b031663258a8a466040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a9057600080fd5b505af1158015610aa4573d6000803e3d6000fd5b50505050505050565b610ab56117cc565b610abf600061193b565b565b610ac96117cc565b600160009054906101000a90046001600160a01b03166001600160a01b0316638119c0656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b409190612967565b6001600160a01b031663a3a28848826040518263ffffffff1660e01b8152600401610b6b91906129e3565b600060405180830381600087803b158015610b8557600080fd5b505af1158015610b99573d6000803e3d6000fd5b5050505050565b610bef6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529060c0820190815260200160008152602001600081525090565b60028281548110610c0257610c0261254e565b6000918252602091829020604080516101208101825260099093029091018054835260018101546001600160a01b03908116948401949094526002810154841691830191909152600380820154606084015260048201549093166080830152600581015460a083015260068101549192909160c084019160ff90911690811115610c8e57610c8e612434565b6003811115610c9f57610c9f612434565b81526007820154602082015260089091015460409091015292915050565b6000610cc76117cc565b6001546040516373bacc5b60e01b8152600481018590526001600160a01b039091169060009082906373bacc5b90602401602060405180830381865afa158015610d15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d399190612967565b905060008190506000836001600160a01b0316638119c0656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da49190612967565b90506000819050826001600160a01b03166391d14854846001600160a01b0316631ca54c956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1e919061299f565b6040516001600160e01b031960e084901b1681526004810191909152306024820152604401602060405180830381865afa158015610e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e849190612984565b610ea05760405162461bcd60e51b815260040161064a906129b8565b826001600160a01b03166390f712cc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f029190612984565b15610f405760405162461bcd60e51b815260206004820152600e60248201526d6973206275726e696e672066656560901b604482015260640161064a565b604051631a7dc13b60e11b81526001600160a01b038216906334fb827690610f6c908a906004016129e3565b602060405180830381865afa158015610f89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fad919061299f565b15610fec5760405162461bcd60e51b815260206004820152600f60248201526e1bdc99195c881b9bdd081d985b1a59608a1b604482015260640161064a565b8651604081015160c09091015160009161100a916305f5e1006118ba565b905061107b846001600160a01b031663d5ded9316040518163ffffffff1660e01b8152600401600060405180830381865afa15801561104d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110759190810190612a46565b8261198b565b6110c05760405162461bcd60e51b81526020600482015260166024820152751b9bdd08195b9bdd59da08199959481d1bc81cd95b1b60521b604482015260640161064a565b60005b885160600151518110156112a657866001600160a01b031663fbfa77cf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561110f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111339190612967565b6001600160a01b03166111668a6000015160a0015183815181106111595761115961254e565b6020026020010151611a70565b6001600160a01b0316146111b55760405162461bcd60e51b81526020600482015260166024820152750cccaca40e4cac6cad2eccae440dcdee840dac2e8c6d60531b604482015260640161064a565b866001600160a01b031663c763e5a16040518163ffffffff1660e01b8152600401600060405180830381865afa1580156111f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261121b9190810190612b97565b61122490612bcb565b89516060015180518390811061123c5761123c61254e565b60200260200101516000015161125190612bcb565b1461129e5760405162461bcd60e51b815260206004820152601b60248201527f6f7574546f6b656e73657420636861696e206e6f74206d617463680000000000604482015260640161064a565b6001016110c3565b506040516334ba5a3560e01b81526001600160a01b038316906334ba5a35906112d9908b90600090600190600401612bf2565b600060405180830381600087803b1580156112f357600080fd5b505af1158015611307573d6000803e3d6000fd5b5050505060026040518061012001604052806002805490508152602001336001600160a01b03168152602001876001600160a01b0316815260200160008152602001856001600160a01b031681526020018a6020015181526020016001600381111561137557611375612434565b815242602080830191909152600060409283018190528454600180820187559582529082902084516009909202019081559083015181850180546001600160a01b03199081166001600160a01b03938416179091559284015160028301805485169183169190911790556060840151600380840191909155608085015160048401805490951692169190911790925560a0830151600582015560c0830151600682018054949592949193909260ff199092169190849081111561143a5761143a612434565b021790555060e0820151816007015561010082015181600801555050836001600160a01b031663a1e6d17e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561149157600080fd5b505af11580156114a5573d6000803e3d6000fd5b50506002547fbf7553b23094c184d8c07e9e2df0690918062d35dc19c41bde673bb8cf30ff4692506114da9150600190612c32565b60405190815260200160405180910390a16002546114fa90600190612c32565b96505050505050505b92915050565b6115116117cc565b600254811061151f57600080fd5b6000600282815481106115345761153461254e565b6000918252602091829020604080516101208101825260099093029091018054835260018101546001600160a01b03908116948401949094526002810154841691830191909152600380820154606084015260048201549093166080830152600581015460a083015260068101549192909160c084019160ff909116908111156115c0576115c0612434565b60038111156115d1576115d1612434565b815260078201546020820152600890910154604090910152905060018160c00151600381111561160357611603612434565b1461160d57600080fd5b608081015160a082015160405163e22ae4cd60e01b81526000916001600160a01b0384169163e22ae4cd916116489160040190815260200190565b600060405180830381865afa158015611665573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168d91908101906125ed565b90506004816040015160048111156116a7576116a7612434565b146116b157600080fd5b600083604001519050806001600160a01b0316638813e96e6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156116f557600080fd5b505af1158015611709573d6000803e3d6000fd5b505050506003600286815481106117225761172261254e565b60009182526020909120600660099092020101805460ff1916600183600381111561174f5761174f612434565b02179055506040518581527f821ef82ae91983cad06c6beaeaa4b8e357ad9137b5e2d762de31f80760f386389060200160405180910390a15050505050565b6117966117cc565b6001600160a01b0381166117c057604051631e4fbdf760e01b81526000600482015260240161064a565b6117c98161193b565b50565b6000546001600160a01b03163314610abf5760405163118cdaa760e01b815233600482015260240161064a565b80602001518260a00151146118475760405162461bcd60e51b81526020600482015260146024820152730dee4c8cae440d0c2e6d040dcdee840dac2e8c6d60631b604482015260640161064a565b80516040516118599190602001612c45565b604051602081830303815290604052805190602001208160200151146118b65760405162461bcd60e51b81526020600482015260126024820152711bdc99195c881a185cda081a5b9d985b1a5960721b604482015260640161064a565b5050565b606060006118c785611ba2565b905060005b81518110156119325783858383815181106118e9576118e961254e565b6020026020010151608001516118ff9190612c58565b6119099190612c6f565b82828151811061191b5761191b61254e565b6020908102919091010151608001526001016118cc565b50949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060005b8351811015611a65578451915060005b8551811015611a49576119e68583815181106119bf576119bf61254e565b60200260200101518783815181106119d9576119d961254e565b6020026020010151611d1b565b15611a41578482815181106119fd576119fd61254e565b602002602001015160800151868281518110611a1b57611a1b61254e565b6020026020010151608001511015611a395760009350505050611503565b809250611a49565b6001016119a1565b5084518203611a5d57600092505050611503565b600101611991565b506001949350505050565b80516000908290602a14611abf5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840c2c8c8e4cae6e640d8cadccee8d60531b604482015260640161064a565b60408051601480825281830190925260009160208201818036833701905050905060005b6014811015611b8d57611b2a83611afb836002612c58565b611b06906003612c91565b81518110611b1657611b1661254e565b01602001516001600160f81b031916611d37565b611b4484611b39846002612c58565b611b06906002612c91565b611b4f906010612ca4565b611b599190612cc0565b60f81b828281518110611b6e57611b6e61254e565b60200101906001600160f81b031916908160001a905350600101611ae3565b50611b9781612cd9565b60601c949350505050565b6060600082516001600160401b03811115611bbf57611bbf611e4e565b604051908082528060200260200182016040528015611c2557816020015b611c126040518060a00160405280606081526020016060815260200160608152602001600060ff168152602001600081525090565b815260200190600190039081611bdd5790505b50905060005b8351811015611d14576040518060a00160405280858381518110611c5157611c5161254e565b6020026020010151600001518152602001858381518110611c7457611c7461254e565b6020026020010151602001518152602001858381518110611c9757611c9761254e565b6020026020010151604001518152602001858381518110611cba57611cba61254e565b60200260200101516060015160ff168152602001858381518110611ce057611ce061254e565b602002602001015160800151815250828281518110611d0157611d0161254e565b6020908102919091010152600101611c2b565b5092915050565b6000611d2682611e08565b611d2f84611e08565b149392505050565b600060f882901c60308110801590611d535750603960ff821611155b15611d6a57611d63603082612d15565b9392505050565b606160ff821610801590611d825750606660ff821611155b15611d9e576061611d9482600a612cc0565b611d639190612d15565b604160ff821610801590611db65750604660ff821611155b15611dc8576041611d9482600a612cc0565b60405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103432bc1031b430b930b1ba32b960591b604482015260640161064a565b60008160000151826020015183604001518460600151604051602001611e319493929190612d2e565b604051602081830303815290604052805190602001209050919050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715611e8657611e86611e4e565b60405290565b604051606081016001600160401b0381118282101715611e8657611e86611e4e565b60405161012081016001600160401b0381118282101715611e8657611e86611e4e565b60405160e081016001600160401b0381118282101715611e8657611e86611e4e565b604051601f8201601f191681016001600160401b0381118282101715611f1b57611f1b611e4e565b604052919050565b6001600160a01b03811681146117c957600080fd5b8035611f4381611f23565b919050565b60006001600160401b03821115611f6157611f61611e4e565b5060051b60200190565b60006001600160401b03821115611f8457611f84611e4e565b50601f01601f191660200190565b600082601f830112611fa357600080fd5b8135611fb6611fb182611f6b565b611ef3565b818152846020838601011115611fcb57600080fd5b816020850160208301376000918101602001919091529392505050565b60ff811681146117c957600080fd5b8035611f4381611fe8565b600082601f83011261201357600080fd5b81356020612023611fb183611f48565b82815260059290921b8401810191818101908684111561204257600080fd5b8286015b848110156121215780356001600160401b03808211156120665760008081fd5b9088019060a0828b03601f19018113156120805760008081fd5b612088611e64565b878401358381111561209a5760008081fd5b6120a88d8a83880101611f92565b825250604080850135848111156120bf5760008081fd5b6120cd8e8b83890101611f92565b8a84015250606080860135858111156120e65760008081fd5b6120f48f8c838a0101611f92565b838501525060809450612108858701611ff7565b9083015250920135908201528352918301918301612046565b509695505050505050565b600082601f83011261213d57600080fd5b8135602061214d611fb183611f48565b82815260059290921b8401810191818101908684111561216c57600080fd5b8286015b848110156121215780356001600160401b0381111561218f5760008081fd5b61219d8986838b0101611f92565b845250918301918301612170565b6000606082840312156121bd57600080fd5b6121c5611e8c565b905081356001600160401b03808211156121de57600080fd5b9083019061012082860312156121f357600080fd5b6121fb611eae565b61220483611f38565b81526020830135602082015260408301358281111561222257600080fd5b61222e87828601612002565b60408301525060608301358281111561224657600080fd5b61225287828601612002565b60608301525060808301358281111561226a57600080fd5b6122768782860161212c565b60808301525060a08301358281111561228e57600080fd5b61229a8782860161212c565b60a08301525060c083013560c082015260e083013560e0820152610100808401358183015250808452506020840135602084015260408401359150808211156122e257600080fd5b506122ef84828501611f92565b60408301525092915050565b60008060006060848603121561231057600080fd5b833592506020808501356001600160401b038082111561232f57600080fd5b61233b888389016121ab565b9450604087013591508082111561235157600080fd5b508501601f8101871361236357600080fd5b8035612371611fb182611f48565b81815260059190911b8201830190838101908983111561239057600080fd5b928401925b828410156123ae57833582529284019290840190612395565b80955050505050509250925092565b600080604083850312156123d057600080fd5b50508035926020909101359150565b6000602082840312156123f157600080fd5b5035919050565b60006020828403121561240a57600080fd5b81356001600160401b0381111561242057600080fd5b61242c848285016121ab565b949350505050565b634e487b7160e01b600052602160045260246000fd5b6004811061246857634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516001600160a01b039081169183019190915260408084015182169083015260608084015190830152608080840151918216908301526101208201905060a083015160a083015260c08301516124ce60c084018261244a565b5060e083015160e083015261010080840151818401525092915050565b600080604083850312156124fe57600080fd5b8235915060208301356001600160401b0381111561251b57600080fd5b612527858286016121ab565b9150509250929050565b60006020828403121561254357600080fd5b8135611d6381611f23565b634e487b7160e01b600052603260045260246000fd5b600082601f83011261257557600080fd5b81516020612585611fb183611f48565b8083825260208201915060208460051b8701019350868411156125a757600080fd5b602086015b8481101561212157805183529183019183016125ac565b805160058110611f4357600080fd5b8051611f4381611f23565b80518015158114611f4357600080fd5b6000602082840312156125ff57600080fd5b81516001600160401b038082111561261657600080fd5b9083019060e0828603121561262a57600080fd5b612632611ed1565b82518281111561264157600080fd5b61264d87828601612564565b82525060208301518281111561266257600080fd5b61266e87828601612564565b602083015250612680604084016125c3565b6040820152612691606084016125d2565b60608201526126a2608084016125dd565b60808201526126b360a084016125dd565b60a082015260c083015160c082015280935050505092915050565b60005b838110156126e95781810151838201526020016126d1565b50506000910152565b6000815180845261270a8160208601602086016126ce565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b848110156127c157601f19868403018952815160a08151818652612761828701826126f2565b915050858201518582038787015261277982826126f2565b9150506040808301518683038288015261279383826126f2565b60608581015160ff16908901526080948501519490970193909352505050978301979083019060010161273b565b5090979650505050505050565b60008282518085526020808601955060208260051b8401016020860160005b848110156127c157601f198684030189526128098383516126f2565b988401989250908301906001016127ed565b80516001600160a01b03168252600061012060208301516020850152604083015181604086015261284e8286018261271e565b91505060608301518482036060860152612868828261271e565b9150506080830151848203608086015261288282826127ce565b91505060a083015184820360a086015261289c82826127ce565b91505060c083015160c085015260e083015160e08501526101008084015181860152508091505092915050565b60008151606084526128de606085018261281b565b9050602083015160208501526040830151848203604086015261290182826126f2565b95945050505050565b60408152600061291d60408301856128c9565b82810360208481019190915284518083528582019282019060005b818110156127c157845183529383019391830191600101612938565b602081526000611d63602083018461271e565b60006020828403121561297957600080fd5b8151611d6381611f23565b60006020828403121561299657600080fd5b611d63826125dd565b6000602082840312156129b157600080fd5b5051919050565b6020808252601190820152703737ba1030903332b29036b0b730b3b2b960791b604082015260600190565b602081526000611d6360208301846128c9565b600082601f830112612a0757600080fd5b8151612a15611fb182611f6b565b818152846020838601011115612a2a57600080fd5b61242c8260208301602087016126ce565b8051611f4381611fe8565b60006020808385031215612a5957600080fd5b82516001600160401b0380821115612a7057600080fd5b818501915085601f830112612a8457600080fd5b8151612a92611fb182611f48565b81815260059190911b83018401908481019088831115612ab157600080fd5b8585015b83811015612b8a57805185811115612acc57600080fd5b860160a0818c03601f19011215612ae35760008081fd5b612aeb611e64565b8882015187811115612afd5760008081fd5b612b0b8d8b838601016129f6565b82525060408083015188811115612b225760008081fd5b612b308e8c838701016129f6565b8b8401525060608084015189811115612b495760008081fd5b612b578f8d838801016129f6565b838501525060809150612b6b828501612a3b565b9083015260a09290920151918101919091528352918601918601612ab5565b5098975050505050505050565b600060208284031215612ba957600080fd5b81516001600160401b03811115612bbf57600080fd5b61242c848285016129f6565b80516020808301519190811015612bec576000198160200360031b1b821691505b50919050565b606081526000612c0560608301866128c9565b931515602083015250901515604090910152919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561150357611503612c1c565b602081526000611d63602083018461281b565b808202811582820484141761150357611503612c1c565b600082612c8c57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561150357611503612c1c565b60ff8181168382160290811690818114611d1457611d14612c1c565b60ff818116838216019081111561150357611503612c1c565b805160208201516bffffffffffffffffffffffff198082169291906014831015612d0d5780818460140360031b1b83161693505b505050919050565b60ff828116828216039081111561150357611503612c1c565b60008551612d40818460208a016126ce565b855190830190612d54818360208a016126ce565b8551910190612d678183602089016126ce565b60f89490941b6001600160f81b03191693019283525050600101939250505056fea2646970667358221220674712f7c0e394a2d24e19b209f46f85a8e4148a1262cbe0ed84f4468011c78764736f6c6343000819003300000000000000000000000086d605be1df8511350f1fc97a6cdcf209b68216c000000000000000000000000a3268a991dfe9a8a116edd3b2048c9c6fffdae2f
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063966dae0e11610071578063966dae0e14610138578063a3a288481461014b578063b8da95001461015e578063e4c26b961461017e578063e60eb35214610191578063f2fde38b146101a457600080fd5b806342470364146100b957806352f7c988146100ce578063598ff850146100e1578063715018a6146100f45780638792985c146100fc5780638da5cb5b14610113575b600080fd5b6100cc6100c73660046122fb565b6101b7565b005b6100cc6100dc3660046123bd565b61052c565b6100cc6100ef3660046123df565b6107a8565b6100cc610aad565b6002545b6040519081526020015b60405180910390f35b6000546001600160a01b03165b6040516001600160a01b03909116815260200161010a565b600154610120906001600160a01b031681565b6100cc6101593660046123f8565b610ac1565b61017161016c3660046123df565b610ba0565b60405161010a919061246c565b61010061018c3660046124eb565b610cbd565b6100cc61019f3660046123df565b611509565b6100cc6101b2366004612531565b61178e565b6101bf6117cc565b60025483106101cd57600080fd5b6000600284815481106101e2576101e261254e565b6000918252602091829020604080516101208101825260099093029091018054835260018101546001600160a01b03908116948401949094526002810154841691830191909152600380820154606084015260048201549093166080830152600581015460a083015260068101549192909160c084019160ff9091169081111561026e5761026e612434565b600381111561027f5761027f612434565b81526020016007820154815260200160088201548152505090506102a381846117f9565b60018160c0015160038111156102bb576102bb612434565b146102c557600080fd5b608081015160a082015160405163e22ae4cd60e01b81526000916001600160a01b0384169163e22ae4cd916103009160040190815260200190565b600060405180830381865afa15801561031d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261034591908101906125ed565b905060028160400151600481111561035f5761035f612434565b1461036957600080fd5b6040516398ebca2160e01b81526001600160a01b038316906398ebca2190610397908890889060040161290a565b600060405180830381600087803b1580156103b157600080fd5b505af11580156103c5573d6000803e3d6000fd5b50505060408085015187519182015160c08301519193506000916103ee91906305f5e1006118ba565b60405163719d90f960e01b81529091506001600160a01b0384169063719d90f99061041d908490600401612954565b600060405180830381600087803b15801561043757600080fd5b505af115801561044b573d6000803e3d6000fd5b505050506002808a815481106104635761046361254e565b60009182526020909120600660099092020101805460ff1916600183600381111561049057610490612434565b0217905550826001600160a01b0316638813e96e6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104d057600080fd5b505af11580156104e4573d6000803e3d6000fd5b505050507ff37a1c7c7a7caea25d767574aae7ebc9b02ce4edec7ce381bc4597c1100b2a5f8960405161051991815260200190565b60405180910390a1505050505050505050565b6105346117cc565b6001546040516373bacc5b60e01b8152600481018490526001600160a01b039091169060009082906373bacc5b90602401602060405180830381865afa158015610582573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a69190612967565b9050806001600160a01b0316636ca7f95c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060a9190612984565b6106535760405162461bcd60e51b81526020600482015260156024820152741a185cc8199959481b9bdd0818dbdb1b1958dd1959605a1b60448201526064015b60405180910390fd5b806001600160a01b03166391d14854826001600160a01b0316631ca54c956040518163ffffffff1660e01b81526004016020604051808303816000875af11580156106a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c6919061299f565b6040516001600160e01b031960e084901b1681526004810191909152306024820152604401602060405180830381865afa158015610708573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072c9190612984565b6107485760405162461bcd60e51b815260040161064a906129b8565b6040516369fe0e2d60e01b8152600481018490526001600160a01b038216906369fe0e2d90602401600060405180830381600087803b15801561078a57600080fd5b505af115801561079e573d6000803e3d6000fd5b5050505050505050565b6107b06117cc565b6001546040516373bacc5b60e01b8152600481018390526001600160a01b039091169060009082906373bacc5b90602401602060405180830381865afa1580156107fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108229190612967565b9050806001600160a01b03166391d14854826001600160a01b0316631ca54c956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610873573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610897919061299f565b6040516001600160e01b031960e084901b1681526004810191909152306024820152604401602060405180830381865afa1580156108d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fd9190612984565b6109195760405162461bcd60e51b815260040161064a906129b8565b806001600160a01b031663959b13d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b9190612984565b156109b95760405162461bcd60e51b815260206004820152600e60248201526d697320726562616c616e63696e6760901b604482015260640161064a565b806001600160a01b031663018d01b86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190612984565b15610a555760405162461bcd60e51b815260206004820152600a60248201526969732069737375696e6760b01b604482015260640161064a565b806001600160a01b031663258a8a466040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a9057600080fd5b505af1158015610aa4573d6000803e3d6000fd5b50505050505050565b610ab56117cc565b610abf600061193b565b565b610ac96117cc565b600160009054906101000a90046001600160a01b03166001600160a01b0316638119c0656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b409190612967565b6001600160a01b031663a3a28848826040518263ffffffff1660e01b8152600401610b6b91906129e3565b600060405180830381600087803b158015610b8557600080fd5b505af1158015610b99573d6000803e3d6000fd5b5050505050565b610bef6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529060c0820190815260200160008152602001600081525090565b60028281548110610c0257610c0261254e565b6000918252602091829020604080516101208101825260099093029091018054835260018101546001600160a01b03908116948401949094526002810154841691830191909152600380820154606084015260048201549093166080830152600581015460a083015260068101549192909160c084019160ff90911690811115610c8e57610c8e612434565b6003811115610c9f57610c9f612434565b81526007820154602082015260089091015460409091015292915050565b6000610cc76117cc565b6001546040516373bacc5b60e01b8152600481018590526001600160a01b039091169060009082906373bacc5b90602401602060405180830381865afa158015610d15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d399190612967565b905060008190506000836001600160a01b0316638119c0656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da49190612967565b90506000819050826001600160a01b03166391d14854846001600160a01b0316631ca54c956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1e919061299f565b6040516001600160e01b031960e084901b1681526004810191909152306024820152604401602060405180830381865afa158015610e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e849190612984565b610ea05760405162461bcd60e51b815260040161064a906129b8565b826001600160a01b03166390f712cc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f029190612984565b15610f405760405162461bcd60e51b815260206004820152600e60248201526d6973206275726e696e672066656560901b604482015260640161064a565b604051631a7dc13b60e11b81526001600160a01b038216906334fb827690610f6c908a906004016129e3565b602060405180830381865afa158015610f89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fad919061299f565b15610fec5760405162461bcd60e51b815260206004820152600f60248201526e1bdc99195c881b9bdd081d985b1a59608a1b604482015260640161064a565b8651604081015160c09091015160009161100a916305f5e1006118ba565b905061107b846001600160a01b031663d5ded9316040518163ffffffff1660e01b8152600401600060405180830381865afa15801561104d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110759190810190612a46565b8261198b565b6110c05760405162461bcd60e51b81526020600482015260166024820152751b9bdd08195b9bdd59da08199959481d1bc81cd95b1b60521b604482015260640161064a565b60005b885160600151518110156112a657866001600160a01b031663fbfa77cf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561110f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111339190612967565b6001600160a01b03166111668a6000015160a0015183815181106111595761115961254e565b6020026020010151611a70565b6001600160a01b0316146111b55760405162461bcd60e51b81526020600482015260166024820152750cccaca40e4cac6cad2eccae440dcdee840dac2e8c6d60531b604482015260640161064a565b866001600160a01b031663c763e5a16040518163ffffffff1660e01b8152600401600060405180830381865afa1580156111f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261121b9190810190612b97565b61122490612bcb565b89516060015180518390811061123c5761123c61254e565b60200260200101516000015161125190612bcb565b1461129e5760405162461bcd60e51b815260206004820152601b60248201527f6f7574546f6b656e73657420636861696e206e6f74206d617463680000000000604482015260640161064a565b6001016110c3565b506040516334ba5a3560e01b81526001600160a01b038316906334ba5a35906112d9908b90600090600190600401612bf2565b600060405180830381600087803b1580156112f357600080fd5b505af1158015611307573d6000803e3d6000fd5b5050505060026040518061012001604052806002805490508152602001336001600160a01b03168152602001876001600160a01b0316815260200160008152602001856001600160a01b031681526020018a6020015181526020016001600381111561137557611375612434565b815242602080830191909152600060409283018190528454600180820187559582529082902084516009909202019081559083015181850180546001600160a01b03199081166001600160a01b03938416179091559284015160028301805485169183169190911790556060840151600380840191909155608085015160048401805490951692169190911790925560a0830151600582015560c0830151600682018054949592949193909260ff199092169190849081111561143a5761143a612434565b021790555060e0820151816007015561010082015181600801555050836001600160a01b031663a1e6d17e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561149157600080fd5b505af11580156114a5573d6000803e3d6000fd5b50506002547fbf7553b23094c184d8c07e9e2df0690918062d35dc19c41bde673bb8cf30ff4692506114da9150600190612c32565b60405190815260200160405180910390a16002546114fa90600190612c32565b96505050505050505b92915050565b6115116117cc565b600254811061151f57600080fd5b6000600282815481106115345761153461254e565b6000918252602091829020604080516101208101825260099093029091018054835260018101546001600160a01b03908116948401949094526002810154841691830191909152600380820154606084015260048201549093166080830152600581015460a083015260068101549192909160c084019160ff909116908111156115c0576115c0612434565b60038111156115d1576115d1612434565b815260078201546020820152600890910154604090910152905060018160c00151600381111561160357611603612434565b1461160d57600080fd5b608081015160a082015160405163e22ae4cd60e01b81526000916001600160a01b0384169163e22ae4cd916116489160040190815260200190565b600060405180830381865afa158015611665573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168d91908101906125ed565b90506004816040015160048111156116a7576116a7612434565b146116b157600080fd5b600083604001519050806001600160a01b0316638813e96e6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156116f557600080fd5b505af1158015611709573d6000803e3d6000fd5b505050506003600286815481106117225761172261254e565b60009182526020909120600660099092020101805460ff1916600183600381111561174f5761174f612434565b02179055506040518581527f821ef82ae91983cad06c6beaeaa4b8e357ad9137b5e2d762de31f80760f386389060200160405180910390a15050505050565b6117966117cc565b6001600160a01b0381166117c057604051631e4fbdf760e01b81526000600482015260240161064a565b6117c98161193b565b50565b6000546001600160a01b03163314610abf5760405163118cdaa760e01b815233600482015260240161064a565b80602001518260a00151146118475760405162461bcd60e51b81526020600482015260146024820152730dee4c8cae440d0c2e6d040dcdee840dac2e8c6d60631b604482015260640161064a565b80516040516118599190602001612c45565b604051602081830303815290604052805190602001208160200151146118b65760405162461bcd60e51b81526020600482015260126024820152711bdc99195c881a185cda081a5b9d985b1a5960721b604482015260640161064a565b5050565b606060006118c785611ba2565b905060005b81518110156119325783858383815181106118e9576118e961254e565b6020026020010151608001516118ff9190612c58565b6119099190612c6f565b82828151811061191b5761191b61254e565b6020908102919091010151608001526001016118cc565b50949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060005b8351811015611a65578451915060005b8551811015611a49576119e68583815181106119bf576119bf61254e565b60200260200101518783815181106119d9576119d961254e565b6020026020010151611d1b565b15611a41578482815181106119fd576119fd61254e565b602002602001015160800151868281518110611a1b57611a1b61254e565b6020026020010151608001511015611a395760009350505050611503565b809250611a49565b6001016119a1565b5084518203611a5d57600092505050611503565b600101611991565b506001949350505050565b80516000908290602a14611abf5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840c2c8c8e4cae6e640d8cadccee8d60531b604482015260640161064a565b60408051601480825281830190925260009160208201818036833701905050905060005b6014811015611b8d57611b2a83611afb836002612c58565b611b06906003612c91565b81518110611b1657611b1661254e565b01602001516001600160f81b031916611d37565b611b4484611b39846002612c58565b611b06906002612c91565b611b4f906010612ca4565b611b599190612cc0565b60f81b828281518110611b6e57611b6e61254e565b60200101906001600160f81b031916908160001a905350600101611ae3565b50611b9781612cd9565b60601c949350505050565b6060600082516001600160401b03811115611bbf57611bbf611e4e565b604051908082528060200260200182016040528015611c2557816020015b611c126040518060a00160405280606081526020016060815260200160608152602001600060ff168152602001600081525090565b815260200190600190039081611bdd5790505b50905060005b8351811015611d14576040518060a00160405280858381518110611c5157611c5161254e565b6020026020010151600001518152602001858381518110611c7457611c7461254e565b6020026020010151602001518152602001858381518110611c9757611c9761254e565b6020026020010151604001518152602001858381518110611cba57611cba61254e565b60200260200101516060015160ff168152602001858381518110611ce057611ce061254e565b602002602001015160800151815250828281518110611d0157611d0161254e565b6020908102919091010152600101611c2b565b5092915050565b6000611d2682611e08565b611d2f84611e08565b149392505050565b600060f882901c60308110801590611d535750603960ff821611155b15611d6a57611d63603082612d15565b9392505050565b606160ff821610801590611d825750606660ff821611155b15611d9e576061611d9482600a612cc0565b611d639190612d15565b604160ff821610801590611db65750604660ff821611155b15611dc8576041611d9482600a612cc0565b60405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103432bc1031b430b930b1ba32b960591b604482015260640161064a565b60008160000151826020015183604001518460600151604051602001611e319493929190612d2e565b604051602081830303815290604052805190602001209050919050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715611e8657611e86611e4e565b60405290565b604051606081016001600160401b0381118282101715611e8657611e86611e4e565b60405161012081016001600160401b0381118282101715611e8657611e86611e4e565b60405160e081016001600160401b0381118282101715611e8657611e86611e4e565b604051601f8201601f191681016001600160401b0381118282101715611f1b57611f1b611e4e565b604052919050565b6001600160a01b03811681146117c957600080fd5b8035611f4381611f23565b919050565b60006001600160401b03821115611f6157611f61611e4e565b5060051b60200190565b60006001600160401b03821115611f8457611f84611e4e565b50601f01601f191660200190565b600082601f830112611fa357600080fd5b8135611fb6611fb182611f6b565b611ef3565b818152846020838601011115611fcb57600080fd5b816020850160208301376000918101602001919091529392505050565b60ff811681146117c957600080fd5b8035611f4381611fe8565b600082601f83011261201357600080fd5b81356020612023611fb183611f48565b82815260059290921b8401810191818101908684111561204257600080fd5b8286015b848110156121215780356001600160401b03808211156120665760008081fd5b9088019060a0828b03601f19018113156120805760008081fd5b612088611e64565b878401358381111561209a5760008081fd5b6120a88d8a83880101611f92565b825250604080850135848111156120bf5760008081fd5b6120cd8e8b83890101611f92565b8a84015250606080860135858111156120e65760008081fd5b6120f48f8c838a0101611f92565b838501525060809450612108858701611ff7565b9083015250920135908201528352918301918301612046565b509695505050505050565b600082601f83011261213d57600080fd5b8135602061214d611fb183611f48565b82815260059290921b8401810191818101908684111561216c57600080fd5b8286015b848110156121215780356001600160401b0381111561218f5760008081fd5b61219d8986838b0101611f92565b845250918301918301612170565b6000606082840312156121bd57600080fd5b6121c5611e8c565b905081356001600160401b03808211156121de57600080fd5b9083019061012082860312156121f357600080fd5b6121fb611eae565b61220483611f38565b81526020830135602082015260408301358281111561222257600080fd5b61222e87828601612002565b60408301525060608301358281111561224657600080fd5b61225287828601612002565b60608301525060808301358281111561226a57600080fd5b6122768782860161212c565b60808301525060a08301358281111561228e57600080fd5b61229a8782860161212c565b60a08301525060c083013560c082015260e083013560e0820152610100808401358183015250808452506020840135602084015260408401359150808211156122e257600080fd5b506122ef84828501611f92565b60408301525092915050565b60008060006060848603121561231057600080fd5b833592506020808501356001600160401b038082111561232f57600080fd5b61233b888389016121ab565b9450604087013591508082111561235157600080fd5b508501601f8101871361236357600080fd5b8035612371611fb182611f48565b81815260059190911b8201830190838101908983111561239057600080fd5b928401925b828410156123ae57833582529284019290840190612395565b80955050505050509250925092565b600080604083850312156123d057600080fd5b50508035926020909101359150565b6000602082840312156123f157600080fd5b5035919050565b60006020828403121561240a57600080fd5b81356001600160401b0381111561242057600080fd5b61242c848285016121ab565b949350505050565b634e487b7160e01b600052602160045260246000fd5b6004811061246857634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516001600160a01b039081169183019190915260408084015182169083015260608084015190830152608080840151918216908301526101208201905060a083015160a083015260c08301516124ce60c084018261244a565b5060e083015160e083015261010080840151818401525092915050565b600080604083850312156124fe57600080fd5b8235915060208301356001600160401b0381111561251b57600080fd5b612527858286016121ab565b9150509250929050565b60006020828403121561254357600080fd5b8135611d6381611f23565b634e487b7160e01b600052603260045260246000fd5b600082601f83011261257557600080fd5b81516020612585611fb183611f48565b8083825260208201915060208460051b8701019350868411156125a757600080fd5b602086015b8481101561212157805183529183019183016125ac565b805160058110611f4357600080fd5b8051611f4381611f23565b80518015158114611f4357600080fd5b6000602082840312156125ff57600080fd5b81516001600160401b038082111561261657600080fd5b9083019060e0828603121561262a57600080fd5b612632611ed1565b82518281111561264157600080fd5b61264d87828601612564565b82525060208301518281111561266257600080fd5b61266e87828601612564565b602083015250612680604084016125c3565b6040820152612691606084016125d2565b60608201526126a2608084016125dd565b60808201526126b360a084016125dd565b60a082015260c083015160c082015280935050505092915050565b60005b838110156126e95781810151838201526020016126d1565b50506000910152565b6000815180845261270a8160208601602086016126ce565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b848110156127c157601f19868403018952815160a08151818652612761828701826126f2565b915050858201518582038787015261277982826126f2565b9150506040808301518683038288015261279383826126f2565b60608581015160ff16908901526080948501519490970193909352505050978301979083019060010161273b565b5090979650505050505050565b60008282518085526020808601955060208260051b8401016020860160005b848110156127c157601f198684030189526128098383516126f2565b988401989250908301906001016127ed565b80516001600160a01b03168252600061012060208301516020850152604083015181604086015261284e8286018261271e565b91505060608301518482036060860152612868828261271e565b9150506080830151848203608086015261288282826127ce565b91505060a083015184820360a086015261289c82826127ce565b91505060c083015160c085015260e083015160e08501526101008084015181860152508091505092915050565b60008151606084526128de606085018261281b565b9050602083015160208501526040830151848203604086015261290182826126f2565b95945050505050565b60408152600061291d60408301856128c9565b82810360208481019190915284518083528582019282019060005b818110156127c157845183529383019391830191600101612938565b602081526000611d63602083018461271e565b60006020828403121561297957600080fd5b8151611d6381611f23565b60006020828403121561299657600080fd5b611d63826125dd565b6000602082840312156129b157600080fd5b5051919050565b6020808252601190820152703737ba1030903332b29036b0b730b3b2b960791b604082015260600190565b602081526000611d6360208301846128c9565b600082601f830112612a0757600080fd5b8151612a15611fb182611f6b565b818152846020838601011115612a2a57600080fd5b61242c8260208301602087016126ce565b8051611f4381611fe8565b60006020808385031215612a5957600080fd5b82516001600160401b0380821115612a7057600080fd5b818501915085601f830112612a8457600080fd5b8151612a92611fb182611f48565b81815260059190911b83018401908481019088831115612ab157600080fd5b8585015b83811015612b8a57805185811115612acc57600080fd5b860160a0818c03601f19011215612ae35760008081fd5b612aeb611e64565b8882015187811115612afd5760008081fd5b612b0b8d8b838601016129f6565b82525060408083015188811115612b225760008081fd5b612b308e8c838701016129f6565b8b8401525060608084015189811115612b495760008081fd5b612b578f8d838801016129f6565b838501525060809150612b6b828501612a3b565b9083015260a09290920151918101919091528352918601918601612ab5565b5098975050505050505050565b600060208284031215612ba957600080fd5b81516001600160401b03811115612bbf57600080fd5b61242c848285016129f6565b80516020808301519190811015612bec576000198160200360031b1b821691505b50919050565b606081526000612c0560608301866128c9565b931515602083015250901515604090910152919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561150357611503612c1c565b602081526000611d63602083018461281b565b808202811582820484141761150357611503612c1c565b600082612c8c57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561150357611503612c1c565b60ff8181168382160290811690818114611d1457611d14612c1c565b60ff818116838216019081111561150357611503612c1c565b805160208201516bffffffffffffffffffffffff198082169291906014831015612d0d5780818460140360031b1b83161693505b505050919050565b60ff828116828216039081111561150357611503612c1c565b60008551612d40818460208a016126ce565b855190830190612d54818360208a016126ce565b8551910190612d678183602089016126ce565b60f89490941b6001600160f81b03191693019283525050600101939250505056fea2646970667358221220674712f7c0e394a2d24e19b209f46f85a8e4148a1262cbe0ed84f4468011c78764736f6c63430008190033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000086d605be1df8511350f1fc97a6cdcf209b68216c000000000000000000000000a3268a991dfe9a8a116edd3b2048c9c6fffdae2f
-----Decoded View---------------
Arg [0] : owner (address): 0x86d605BE1dF8511350f1fc97a6Cdcf209b68216C
Arg [1] : factoryAddress_ (address): 0xA3268A991DFe9A8a116edD3b2048C9c6FffdaE2F
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000086d605be1df8511350f1fc97a6cdcf209b68216c
Arg [1] : 000000000000000000000000a3268a991dfe9a8a116edd3b2048c9c6fffdae2f
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.